### OAuth2.0流程:参照github (1)用户访问客户端,后者将前者导向认证服务器: * response\_type:表示授权类型,必选项,此处的值固定为"code" * client\_id:表示客户端的ID,必选项 * redirect\_uri:表示重定向URI,可选项 * scope:表示申请的权限范围,可选项 * state:表示客户端的当前状态,可以指定任意值,认证服务器会原封不动地返回这个值。 https://gitee.com/oauth/authorize?client_id=xxx&redirect_uri=rediurl&response_type=code https://github.com/login/oauth/authorize?client_id=xxx&scope=user:email (2)认证服务器重定向到redirect_uri,并返回参数code (3)应用服务器获取到code,并把账号相关信息POST请求认证服务器 * client_id:用户ID * client_secret:用户秘钥 * code:接收到的code码 (4)认证服务器返回access_token,再次用得到的token请求 * github:access_token=021118b849fb88a68c805fd9c22699c4017xxx&scope=user%3Aemail&token_type=bearer (5)得到最终需要的数据: ``` { "login":"linzening", "id":29197457, "node_id":"MDQ6VXNlcjI5MTk3NDU3", "avatar_url":"https://avatars2.githubusercontent.com/u/29197457?v=4", "gravatar_id":"", "url":"https://api.github.com/users/linzening", "html_url":"https://github.com/linzening", "followers_url":"https://api.github.com/users/linzening/followers", "following_url":"https://api.github.com/users/linzening/following{/other_user}", "gists_url":"https://api.github.com/users/linzening/gists{/gist_id}", "starred_url":"https://api.github.com/users/linzening/starred{/owner}{/repo}", "subscriptions_url":"https://api.github.com/users/linzening/subscriptions", "organizations_url":"https://api.github.com/users/linzening/orgs", "repos_url":"https://api.github.com/users/linzening/repos", "events_url":"https://api.github.com/users/linzening/events{/privacy}", "received_events_url":"https://api.github.com/users/linzening/received_events", "type":"User", "site_admin":false, "name":"linzening", "company":null, "blog":"", "location":null, "email":null, "hireable":null, "bio":null, "public_repos":15, "public_gists":0, "followers":0, "following":1, "created_at":"2017-06-05T10:19:49Z", "updated_at":"2019-02-28T11:26:10Z" } ``` >[info] 参考文档:`http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html`