PHP应用接入指引
1 阅读前提
本开发攻略基于使用Authorization Code获取Access Token的授权验证流程,适用于需要从web server访问的应用,例如Web/wap网站。
OAuth2.0的授权验证示意图如下所示:
对于应用而言,需要进行两步:
1)获取Authorization Code;
2)通过Authorization Code获取Access Token
2 接入准备
1)请确保您准备接入的Spark平台服务已经启用,并核实各服务端口是否可以正常访问,默认Oauth服务端口为443
2)请确认您的应用已经在Spark平台创建,并成功获取app_ID和app_KEY
3 引用SDK,修改配置文件相关内容
请将Oauth.php添加到项目中。然后修改Oauth.php中的Config 类的配置信息。文件内容如下图所示,请根据应用真实情况修改该文件。
class Config{
/**
* app_ID 应用标识
* app_KEY 应用密码
* redirect_URI 回调地址
*
* oauth_base_URL 授权服务
* openapi_base_URL api服务
* 以上参数需要根据应用的实际部署参数配置
* 可以使用spark应用管理员登陆spark portal 下载制定应用的KEY
* 根据下载下来的配置信息内容 修改以下参数值
*/
public static $items = array(
'app_ID' => '8a303e4ab5314932be755fbea6a33d04',
'app_KEY' => 'Dz6KNcls',
'redirect_URI'=>'http://192.168.10.159/workspace/test/callback.php',
'scope'=>'user',
'oauth_base_URL'=>'https://192.168.10.130/oauth2',
'openapi_base_URL'=>'https://192.168.10.130/openapi',
'authorize_URL'=>'/oauth/authorize',
'access_token_URL'=>'/oauth/token',
'get_openID_URL'=>'/oauth/me',
'get_user_info_URL'=>'/user/get_user_info',
'get_user_extension'=>'/user/get_user_extension',
'direct_get_user_extension_URL'=> '/user/direct_get_user_extension',
'direct_bind_user_extension_URL'=>'/user/direct_bind_user_extension',
'bind_user_extension_request_URL'=>'/user/direct_bind_user_extension',
'parse_user_cert_URL'=>'/user/parse_user_cert'
);
}
4 放置Spark账号登录
在应用首页入口和主要的登录、注册页面上放置“Spark账号登录”标识(见红色方框标记处):
“Spark账号登录”的连接可直接或间接跳转到Spark的统一认证登录页面,具体的访问地址为:
https://oauth_ip:oauth_port/oauth2/oauth/authorize?client_id=[YOUR_APP_ID]&redirect_uri=[YOUR_REDIRECT_URI]&response_type=code&state=[THE_STATE]&scope=[THE_SCOPE]
间接跳转的方式为,“Spark账号登录”的连接指向应用的一个ACTION,在该ACTION中通过SDK加载提前设置好的配置文件,然后组装统一认证登录页面URL,最后重定向到该URL。
例如:“Spark账号登录”链接指向“http://192.168.10.159/workspace/test/login.php”,部分源代码如下:
require 'Oauth.php';
//跳转到统一认证登陆
$oauth=new Oauth();
echo $oauth->getAuthorizeURL();
header("Location: ".$oauth->getAuthorizeURL());
?>
5 获取Authorization Code
在上一步,页面跳转到Spark的统一认证登录页面后,用户选择登录认证方式登录,成功登录后,弹出授权框引导用户授权(仅在第一次成功登录,以及第一次访问某个未授权的OpenAPI时会出现授权页),如下图所示:
用户点击“确认并授权”后,页面会再次重定向到应用的回调地址(即在spark_connect_config.properties配置的redirect_URI),如下图所示:
#应用回调地址
redirect_URI = 'http://192.168.10.159/workspace/test/callback.php
6 通过Authorization Code获取Access Token
在上一步中,用户登录成功并确认授权后,页面由Spark统一认证登录跳转到应用的回调地址,如:http://192.168.10.159/workspace/test/callback.php。这时,可通过SDK获取Authorization Code,并通过Authorization Code获取Access Token。如下所示:
$oauth=new Oauth();
$accessToken=$oauth->getAccessToken();
if ($accessToken->accessToken){
特别提示:获取到的access token具有3个月有效期,用户再次登录时自动刷新。应用可存储access token信息,以便后续调用OpenAPI访问时使用。
7 使用Access Token获取用户的OpenID
成功获取Access Token后,可通过Access token获取OpenID。
$openid=$oauth->getOpenId($accessToken->accessToken);
8 使用Access Token以及OpenID来调用OpenAPI
成功获得OpenID后,可通过Access Token和OpenID调用OpenAPI接口获得用户信息或者用户属性信息等。如下所示:
$user=$oauth->getUserInfo($accessToken->accessToken, $openid);
echo "
getUserInfo->loginAccount:".$user->loginAccount;
$extension=$oauth->getUserExtension($accessToken->accessToken, $openid);
注意:是否使用OpenAPI取决于应用需要,如不需要可以忽略此步骤。
9 SDK及Demo下载