*据说OAuth2比OAuth1的认证方式简单了许多, 方便了开发者们的开发。
0.从这里Clone一份OAuth2代码并认真阅读, 你可以参照这里的demo
1.仿照OAuth2_Storage_PDO重写一个OAuth2_Storage_Yours,
1 2 3 | 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! 注意这样子会丢东西。
1 2 3 | $request = OAuth2_Request::createFromGlobals(); $response = $oserver ->handleAuthorizeRequest( $request , (bool) $_POST [ 'authorize' ], 用户ID); $response ->send(); |
4.撰写grant页面。
1 2 3 | $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 条评论。