Rails GitHub 登录 OAuth 学习

bajiudongfeng · 2017年03月23日 · 最后由 bajiudongfeng 回复于 2017年03月24日 · 2046 次阅读
  1. 简介 维基百科

    OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

    OAuth 允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站) 在特定的时段(例如,接下来的 2 小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth 让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容。

  2. 大致流程 (以 github 为例)

    应用向 github 请求授权 github 为用户显示一个授权页面,用户在此页面确认是否同意应用的请求 如果用户同意授权,应用会获取到一个访问令牌 (access_token), 通过此令牌,应用可以访问授权用户的数据

  3. 详细流程 github 文档

    转发到授权页面的 api

    GET https://github.com/login/oauth/authorize client_id 必须参数。

    如果用户同意授权,github 就会转发到第三方网站,同时提供一个 code 参数。
    第三方站点接着调用 api

    POST https://github.com/login/oauth/access_token client_id 必须 client_secret 必须 code 必须 获得 token,例如
    access_token=e72e16c7e42f292c6912e7710c838347ae178b4a&scope=user%2Cgist&token_type=bearer

    访问资源

    GET https://api.github.com/user?access_token=...

  4. devise 集成文档

需要 登录 后方可回复, 如果你还没有账号请 注册新账号