OAuth 2.0-简单流程

最近查了一下OAuth 2.0的流程,简单总结了一下。
详细参照: OAuth 2.0.

简单流程图

OAuth 2.0-简单流程

说明

  1. 用户访问网站A;“h ttp://XXXXXX.com”

  2. 登陆用户时,用户选择 使用github账号 登陆,网站A连接github网站,协商取得情报;

  3. github将情报 Client Id + Client Secret 返回给网站A

  4. 网站A将 Client Id 连携给用户

  5. 用户使用 Client Id 连接到github,进行确认授权
    例;

    // 用户登录 github,协商
    GET //github.com/login/oauth/authorize
    // 协商凭证
    params = {
    client_id: “xxxx”,
    redirect_uri: “h ttp://XXXXXX.com”
    }

  6. 用户在github的确认授权画面,同意授权后,github将生成code信息连携给网站A,并通过 redirect_uri 的设定值,跳转到网站A

    // 协商成功后带着盖了章的 code
    Location: h ttp://XXXXXX.com?code=xxx

  7. 网站A拿着code和最开始拿到的Client Secret,访问github获得最终的通行证

    // 网站和 github 之间的协商
    POST //github.com/login/oauth/access_token
    // 协商凭证包括 github 给用户盖的章和 github 发给我的门票
    params = {
    code: “xxx”,
    client_id: “xxx”,
    client_secret: “xxx”,
    redirect_uri: “h ttp://XXXXXX.com”
    }

  8. 返回 access_token

    // 拿到最后的绿卡
    response = {
    access_token: “e72e16c7e42f292c6912e7710c838347ae178b4a”
    scope: “user,gist”
    token_type: “bearer”,
    refresh_token: “xxxx”
    }

  9. 如果使用有效期限的话,当token过期的话,还需要Refresh Token。