OAuth 2.0 PHP客户端和服务器示例

joh*_*dad 25 php oauth oauth-2.0

我在这里下载了适用于OAuth 2.0的服务器版本(PDO):http://code.google.com/p/oauth2-php/

不确定它是否是最好的实现.

它已配置并且当前返回错误JSON,表示它正在等待客户端向其传递正确的参数.

现在,它带有一个带有Client .inc文件的"lib"文件夹.老实说,我不知道如何使用它,因为我没有在存档中找到的PHP示例,也无法在线找到任何内容.我找到了一个使用这个库的Drupal的例子,但是由于他们有自己的Drupal相关功能作为模块,所以它是一个混乱.

我想知道是否有人在这里运气使用这个PHP客户端库,如果是这样,他们可以共享一个连接,授权然后重定向到回调URL的示例,以便能够访问受保护的页面/ api调用会话吗?

我想尝试Facebook Graph API(开源),但我发现它非常适合Facebook,并且不太确定我应该将URL放在我自己的服务器机器上安装的OAuth 2.0服务器上.

Séb*_*uld 44

一旦了解协议的工作原理,设置OAuth2提供程序就相当容易.这是一个2或3步骤(取决于您的设置以及您是代表用户还是仅从服务器获取令牌).

你需要什么:

  • OAuth2提供程序的工作代码
  • 忍耐

您需要了解如何对代码执行操作:

  • 创建客户端(公共和私人访问令牌)
  • 弄清楚如何命名授权和令牌端点(通常/authorize/token)
  • 弄清楚如何处理范围

获取令牌的第一步是调用/authorize?response_type=code&client_id=[YOUR ID]&redirect_uri=[YOUR REDIRECT URI]&scope=[YOUR SCOPE],其中:

  • clientid([您的ID])是您的公共访问令牌
  • redirect_uri([您的REDIRECT URI])是您的重定向URI.完成自动调整步骤后,您将被重定向到此
  • 范围是您未来令牌的范围

完成后(通常有一个提交按钮),您的浏览器将被重定向到使用URL中的代码指定的URI(代码= blah).保存此值.

获得此代码后,请调用另一个端点: /token?client_id=[YOUR ID]&client_secret=[YOUR SECRET]&grant_type=authorization_code&scope=[YOUR SCOPE]&code=[YOUR CODE]&redirect_uri=[YOUR REDIRECT URI]

参数: - client_id - 再次,您的客户端公钥 - client_secret - 您的私钥(这应该是服务器端调用) - 范围 - 令牌的范围 - 必须匹配第一个调用 - redirect_uri - 重定向URI - 必须匹配第一个电话 - 代码 - 您收到的代码

如果一切顺利,您将在屏幕上看到包含令牌信息的JSON对象.

在后台会发生什么

第1步(授权)

当您确认表单时,服务器会创建一个临时令牌(称为auth令牌),这通常具有很短的生命周期(我的oauth2 sp代码通常将此设置为60秒).这是您的服务器从接收代码到触发步骤2的时间.它只是一个确认系统,其目的是还存储步骤1中提供的信息以防止劫持.

第2步(令牌)

这是您实际创建访问令牌的地方.大量的验证,很多东西,但最后,令牌只是一个链接你的client_id和你的令牌的值.这就是全部.

无耻的插件:如果您正在使用Laravel框架,我从头开始构建这个(而不是使用蹩脚的,未记录的示例代码):http://bundles.laravel.com/bundle/oauth2-sp


Alv*_* K. 6

PHP有一个PECL客户端:http://www.php.net/manual/en/book.oauth.php

oauth2上的精彩介绍:http://www.slideshare.net/aaronpk/an-introduction-to-oauth-2

该站点oauth2.net/2/列出了处于不同开发阶段的3个oauth服务器.

大型提供商(Facebook,谷歌,雅虎,Twitter等)实现了他们自己的Oauth风格,而且Oauth 2.0仍处于草案修订版,每个提供商都遵循不同的修订版


小智 5

我正在开发某种类型的 PHP 客户端,它执行以下操作:

  • 在套接字上监听
  • 身份验证->请求
  • 身份验证过程 -> 服务器端规则
  • 身份验证 -> 作为结果的响应
  • 继续收集客户端的响应需求

简短的答案是:curl + JSON

使用curl向我的服务器端脚本请求的所有身份验证过程都采用身份验证变量,然后进行处理和比较,最后回显“JSON编码”响应在返回到客户端的回显中包含多个变量。

响应后,将“JSON 解码”变量收集为独立变量,现在客户端脚本知道为此客户端执行的操作。

然后给当前经过身份验证的用户(由Sessions指定)一些工具。所有工作都在PHP Desktop中执行,这是一个支持 PHP 和 curl 的嵌入式 mongoose Web 服务器。事实上,没有必要使用任何库,因此 PHP 有自己完整的库。使用curl、JSON以及在服务器端PHP、MySQL(条件检查)足以用于身份验证目的。