• 在站点中集成Github的Oauth登陆


    注册Oauth App

    注册地址:Developer applications (github.com),可以注册多个App,注册完成后,可以在右侧看到注册的App

      

    点击进去,可以看到一些基本信息,其中最重要的是CleintId和ClientSecrets(默认没有,自己创建即可),

      

    其中ClientId是公开的,用于标志你的OauthApp,ClientSecrets则可以认为是私钥,用来获取认证后的用户令牌的,需要保密,如果丢了或公开了则需要换一个。

    认证流程

    认证流程其实就是一个通过Github用户授权获取Github用户信息的过程,其流程在其官方文档授权 OAuth 应用程序中写得比较详细,大体分为如下几步:

      1. 将用户重定向到github oauth授权页。

      授权示例地址为:https://github.com/login/oauth/authorize?client_id=ba674d236a91709b69b1官方文档说明更加详细些。其中有两个参数比较重要:client_id和redirect_uri。

    • client_id就是前面注册时分发的CleintId,是必选的,否则github不知道用于和哪个站点集成认证。
    • redirect_uri则是认证后的跳转地址,用于传递用户的临时token,这个参数是选填的,如果不填会跳转到注册时填的跳转地址。

      如果用户未授权,会出现下面的一个授权确认的对话框,如果已经授权,会直接跳转到跳转地址。

          

     
     2. 获取用户授权码。根据授权码获取用户访问token。

      用户授权完成后,会跳转到指定的跳转页,同时会返回一个临时的用户授权码code作为参数。

          

    有的这个用户授权码code,还不能获取用户token,需要把这个授权码传给后端,后端和私钥client_secret一起获取用户token。

    如下是一个获取token地址示例:https://github.com/login/o获取auth/access_token?client_id=xxx&client_secret=xxx&code=xxx。还有几个其它参数可以参考官方文档

    获取到的用户令牌示例如下:access_token=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&scope=&token_type=bearer

    PS:因为授权id是公开的,因此是不能直接根据授权码获取用户信息的,必须和私钥配合。

     
      3. 根据用户令牌获取用户信息:

      有了用户令牌后,就可以访问用户信息了,以其用户信息接口https://api.github.com/user为例:

    到此时,已经能获取到用户信息了,可以将改用户直接登录,或关联到现有的用户了。后面流程和Oauth就没有关系了。

     

  • 相关阅读:
    UVA 1660 Cable TV Network
    UVA 1149 Bin Packing
    UVA 1610 Party Games
    UVA 12545 Bits Equalizer
    UVA 11491 Erasing and Winning
    UVA 1611 Crane
    DataTable循环删除行
    SqlBulkCopy使用心得 (大量数据导入)
    JQuery选择器大全
    java学习--GUI3
  • 原文地址:https://www.cnblogs.com/TianFang/p/16167256.html
Copyright © 2020-2023  润新知