aboutyouauth-sdk

ABOUT YOU 外部应用程序授权 SDK

0.3.7 2014-12-15 17:01 UTC

This package is not auto-updated.

Last update: 2024-09-24 01:53:32 UTC


README

内容

[目录]

auth-sdk

auth-sdk 是对持久状态存储和重定向响应解析的简单包装,用于 OAuth2 网页授权类型

更简单的解释请参考 http://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified。您至少应该阅读一次,以便对 OAuth2 有基本的了解。此 SDK 覆盖了其中提到的“Web 服务器应用程序”部分。

auth-sdk 隐藏了大多数 OAuth2 相关内容,所以您基本上只需做以下三件事(按此顺序)

  • 首先尝试解析登录后发送回您网站的重定向。
    • 调用 sdk->parseRedirectResponse()
  • 检查是否有权限(=访问令牌)调用用户的 API 方法。
    • 调用 sdk->getUser()
  • 如果没有,将用户重定向到外部登录页面。 1
    • 重定向到 sdk->getLoginUrl()

您的应用程序现在应该有权限代表用户进行 API 调用。请参阅:./examples/basic.php

您可以使用存储在 auth-sdk 中的访问令牌进行后续的 API 调用,直到令牌过期。(服务器端或用户登出)

使用 composer 包含

  "require": {
    "aboutyou/auth-sdk": "~0.3.6"
  }

如果您现在只想运行示例,请参阅"示例"部分

Oauth2 网页授权类型的使用

  • 请参阅:./examples/basic.php

创建 SDK 对象

$authSDK = new AuthSDK(array(
		'clientId'=>'from_dev_center',
		'clientToken'=>'from_dev_center',
		'clientSecret' => 'from_dev_center',
		'redirectUri'=>'entered_in_dev_center',
		'scope'=>'firstname',  //optional. the only valid value is firstname at the moment
		'popup'=>'true|false', //optional. true will render a small login, false the login webpage
	),new SessionStorage());

(有两个可选参数可以“覆盖”'loginUrl'和'resourceUrl'。但通常没有必要)

解析响应(登录重定向回您的网站)

  • 首先调用此方法,并且每次请求只能调用一次
  • $parsed 将为真,如果是重定向。以防万一您需要这些信息。
$parsed = $authSDK->parseRedirectResponse();

检查用户状态。显示登录或登出

  • 检查是否需要登录按钮或重定向
$authResult = $authSDK->getUser();
if($authResult->hasErrors()){
	//optional, add values you want to get back on your redirect endpoint
	//but do this before getLoginUrl()
	$authSDK->setState('someKey','someVal');

	renderLoginButton( $authSDK->getLoginUrl() ); //renderLoginButton: your render method
	var_dump($authResult->getErrors());

}else{
	renderLogoutButton( $authSDK->getLogoutUrl() ); //renderLogoutButton: your render method
	var_dump($authResult->getResult()->response);
	var_dump($authSDK->getState('someKey'));

}
  • 还可以设置 'state' 参数(将返回)
  • getLogoutUrl() 有一个可选参数 redirectUrl。如果设置,登出后将被重定向到该地址。否则,到 SDK 配置的 'redirectUri'。
  • 在这两种情况下,getLogoutUrl() 将在 redirectUrl 后附加查询参数 logout=true(例如,parseRedirectUrl() 用于清理持久存储)。
## 示例
  • 可以在文件夹 ./examples/* 中找到

运行

  • 打开终端,在 SDK 根目录下运行 php composer.phar install
**如果您使用php >= 5.4,现在您可以在`./examples`文件夹中尝试执行`./run.sh`(以root/sudo身份)。注意控制台消息(它会抱怨关于`/etc/hosts`配置,添加它)。如果一切正常,之后您应该能够打开控制台显示的(本地)URL。**在Windows上,或者如果run.sh无法正常工作:使用php >= 5.4,只需在`./examples`文件夹中尝试执行`php -S mytestserver.local:8080`(在Linux/OSX上以root/sudo身份)。请注意,您需要将`127.0.0.1 mytestserver.local`添加到您的`/etc/hosts`中才能使其正常工作。(Windows:system32\drivers\etc\hosts)**对于php < 5.4,请参考您的服务器文档以创建一个vhost配置,将文档根目录指向`./examples`文件夹。

文件

  • ./examples/basic.php:

    • 典型用例的示例,只需所需代码即可。注意,您需要将您的redirectUrl设置为{yourdomain}/basic.php
  • ./examples/parent_page.php & ./examples/result_page.php

    • 显示更多选项的示例,拦截重定向,以便您可以查看返回的参数。注意,您需要将您的redirectUrl设置为{yourdomain}/result_page.php

配置

  • ./example/common_params.php复制到./example/common_params.local.php
  • 将./example/common_params.local.php中的参数修改为您自己的值(从开发中心获取)