*据说OAuth2比OAuth1的认证方式简单了许多, 方便了开发者们的开发。
0.从这里Clone一份OAuth2代码并认真阅读, 你可以参照这里的demo
1.仿照OAuth2_Storage_PDO重写一个OAuth2_Storage_Yours,
implements OAuth2_Storage_AccessTokenInterface, OAuth2_Storage_ClientCredentialsInterface, OAuth2_Storage_UserCredentialsInterface, OAuth2_Storage_RefreshTokenInterface, OAuth2_Storage_JWTBearerInterface, OAuth2_Storage_ScopeInterface
2.从如上类创建一个对象, 我把它叫做$ostorage。
从OAuth2_Server创建一个对象(构造: new OAuth2_Server($ostorage) ), 我把它叫做$oserver。
从OAuth2_Scope创建一个对象(构造: new OAuth2_Scope($ostorage) ), 我把它叫做$oscope。
3.撰写authorize页面, 提供给用户确认是否授权的界面, 其中有个checkbox scope是个数组(name=”scope[]”), 让用户选择授权范围。
并且处理post回来的数据。Update! 注意这样子会丢东西。
$request = OAuth2_Request::createFromGlobals(); $response = $oserver->handleAuthorizeRequest($request, (bool)$_POST['authorize'], 用户ID); $response->send();
4.撰写grant页面。
$request = OAuth2_Request::createFromGlobals(); $response = $oserver->handleGrantRequest($request); $response->send();
5.至此, 需要授权的应用已经可以获得Access_Token, 并且可以通过这个Access_Token获取它需要的东西。
你可以使用$oserver->verifyAccessRequest来验证这个Access_Token并且使用指定的Scope。
PS.上面的send方法都默认返回json, 可以指定它返回xml。
1 条评论。