使用 Authing 可以轻松接入许多社会化登录,同时无需翻看社会化登录提供方的繁琐接入文档,让开发者更加专注业务从而提升开发效率。

这看起来很方便,But,通过 Authing 登录的社会化登录用户,无法获取更高级的权限!以 Github 举例:授权域功能上线之前,通过 Authing 登录的 Github 用户无法授权读写仓库、读写 Issues 等权限;此功能上线后,通过 Authing 登录的 Github 用户将拥有这些高阶权限的授权能力。如 Github 授权域(图中的 Scope 参数):QQ 授权域(图中的 Scope 参数):微博授权域(图中的 Scope 参数):开发者只需要勾选以上 checkbox 就可以很方便的拥有这些能力!授权流程

  1. 用户通过 Authing 登录;

  1. 用户在 Authing 登录界面中点击「使用 Github 登录」;

  1. 用户通过 Github 登录后 Authing 将 Github 的信息集成到 Authing 用户信息中;

  1. Authing 返回 Code 给开发者配置好的 redirct_uri;

  1. 开发者使用 Code 换取 access_token;

  1. 开发者使用 access_token 换取用户信息;

  1. 开发者在用户信息中获取用户在 Github 平台的 access_token,然后获取操作 Github 的更高级权限;

  1. 开发者完成用户认证并开始引导用户执行业务流程;

下图是一个简化流程:开启社会化登录授权域创建 Github 应用在 Github 申请 OAuth 应用,同时授权回调地址填写 Authing 提供的地址:https://oauth.authing.cn/oauth/github/redirect,如下图所示:创建完成后记录 Client ID 和 Client Secret:配置社会化登录在Authing 控制台中依次点击第三方登录 -> 社会化登录 -> Github,打开 Github 登录,填写 Github OAuth 应用信息,并在 Scopes 多选框中勾选 repo,最后点击确定:repo 授权域的作用是授权第三方应用读写 Github 仓库的权限。如果你想了解其他 Scope 的含义,请查看这篇文档:https://docs.authing.cn/authing/advanced/social-login/social-login-scopes。体验拥有更高权限的 Github 登录访问登录页面Authing 控制台 > 第三方登录 > OIDC 应用,找到你的 OIDC 应用,点击体验按钮。如果没有 OIDC 应用,请先创建 OIDC 应用。转到登录界面后,点击「使用 Github 登录」,如下图所示:在弹出的窗口中,与 Github 完成登录认证,之后会显示确权页面,可见此处提示需要授权 repo,如下图所示:点击授权按钮,之后是 Authing 单点登录中的确权环节:点击「授权登录」,之后会跳转到在 OIDC 应用中设置的业务回调地址:获取到 code 之后,你可以参考以下链接完成登录:1. https://docs.authing.cn/authing/advanced/oidc/oidc-authorization#04-shi-yong-code-huan-qu-token获取社会化登录 token那么接下来如何从 Authing 获取并使用 Github 的 access_token,使用更高级的权限呢?只要获取用户资料即可,Github 的 access_token 存在用户资料中。以下以 Authing Node.js SDK 来举例:安装 authing-js-sdk:

$ npm install authing-js-sdk

初始化 SDK 并获取用户资料:

const Authing = require('authing-js-sdk');const userPoolId = "你的用户池 ID";const secret = "你的用户池 Secret";let authing = new Authing({  userPoolId,  secret});async function go() {  let user = await authing.user({id: 'Authing 用户 ID'});  console.log(user);}go();

返回结果:

{  ...  "thirdPartyIdentity": {    "provider": "github",    "refreshToken": null,    "expiresIn": null,    "updatedAt": "2020-02-11T21:56:50+08:00",    "accessToken": "1a20a073f967264a7e7d05528236525b1376a4a9"  }  ...}

使用社会化登录 token从上一步的返回结果中取出 Github Token 后,调用读取用户仓库信息的 API:

$ curl -H "Authorization: token 1a20a073f967264a7e7d05528236525b1376a4a9" https://api.github.com/user/repos\?visibility\=private

可以看到返回了用户的私有仓库信息:刷新社会化登录 token如果社会化登录方的 token 在一定时间后失效,会导致旧的 token 无法访问社会化登录方的服务,因此需要刷新社会化登录方的 token,并使用新的 token 调用相关服务。你可以调用 SDK 中的 refreshThirdPartyToken 方法来刷新社会化登录 token:

const Authing = require('authing-js-sdk');const userPoolId = "你的用户池 ID"const secret = "你的用户池 Secret"let authing = new Authing({  userPoolId,  secret})async function go() {  let res = await authing.refreshThirdPartyToken('Authing 用户 ID');  console.log(res);}go();

返回结果:

{  refreshSuccess: true,  message: 'github token 无需刷新,官网文档已说明长期有效',  provider: 'github',  refreshToken: null,  accessToken: '1a20a073f967264a7e7d05528236525b1376a4a9',  updatedAt: '2020-02-11T21:57:04+08:00'}

由于 Github 不提供 refresh_token 并且 access_token 长期有效,所以此处其实并未真正刷新 token。其他社会化登录方如微信、QQ 提供刷新 token 功能,通过 SDK 刷新 token 时,Authing 会发出刷新 token 请求,并返回新的 accessToken 和 refreshToken。总结以上就是 Authing + Github 社会化登录的使用方式。总结起来,Authing 帮你省去了服务器处理 OAuth 2.0 协议中 code 换 token,token 换用户信息的过程,能够直接将用户信息返回给你。同时 Authing 易用的 SDK 能够帮你快速接入获取、刷新用户社会化登录 token 的功能。如果你还需要其他社会化登录,比如微博、微信,那么此时的身份整合与管理作用的优势就体现出来,同时你也无需阅读国内质量参差不齐的授权登录开发文档。你只需要填写配置信息,Authing 会帮你拼接授权 URL  链接,Authing 会帮你处理 OAuth 2.0 协议中换取用户信息的繁琐过程,并将用户信息直接返回给你的业务地址,Authing 会帮你绑定不同第三方社会化登录提供商,Authing 为你提供简单易用的 SDK,轻松获取、刷新用户的社会化登录 token。

struts2 redirect 获取参数null_社会化登录支持授权域以便于获取更大权限相关推荐

  1. 新的一年,从事液晶×××、数字标牌技术支持的我,希望有更大的进步,寻找一份更有挑战性的工作!...

    液晶×××.数字标牌 技术支持 新的一年,希望有更大的进步,在寻找一份更有挑战性的工作! 本人从事液晶×××.数字标牌技术支持工作已有一年多,想寻求一份更有挑战性的工作.本人曾做过以下工作: 担任×× ...

  2. 【第二十二讲】获取参数名

    [第二十二讲]获取参数名 文章目录 [第二十二讲]获取参数名 将 `Bean2.java` 编译后,失去参数 加 `-parameters` 编译后有参数 加 `-g` 编译后有参数 获取参数 封装接 ...

  3. js地址栏获取参数的方法,解决中文乱码问题,能支持中文参数

    第一种:参数只能是英文的. //获取地址栏参数//只能是英文参数 function GetQueryString(name) {     var reg = new RegExp("(^|& ...

  4. 在线获取百度BDUSS源码 支持5种登录方式

    简介: 这个是模拟百度登录获取BDUSS的源码,更新总共5种获取方式,分别是普通登录.扫码登录.短信验证码登录和第三方登录(包括QQ登录和微信登录),可无视异地和登录保护. 网盘下载地址: http: ...

  5. 社会化登录小结 (豆瓣为例)

    社会化登录之豆瓣小结 1:登录豆瓣网,注册一个开发者账号,然后选择我的应用. 2:创建我的应用: 回调地址很重要,要和自己请求时的回调地址一致.QQ对于回调地址只是匹配域名,其他几个是直接匹配整个地址 ...

  6. 前端学习(1966)vue之电商管理系统电商系统之获取参数列表

    目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...

  7. Struts2中带参数的结果集

    1.在Struts2中带参数的结果集,即向结果集传参.struts2中有转发和重定向到某个视图,其中转发的过程在服务端完成,这个过程共享一个value stack(值栈),客户端并不知道页面跳转到了哪 ...

  8. 钉钉二次开发-组织机构同步 获取用户信息 单点登录接口

    建用户 调试工具:在线调试 请求方式:POST(HTTPS) 请求地址:https://oapi.dingtalk.com/user/create?access_token=ACCESS_TOKEN ...

  9. 素颜聚合登录多渠道便捷登录平台接入【免费社会化登录计划】

    素颜聚合登录,就是利用用户在第三方平台上已有的账号来快速完成自己应用的登录流程.简化用户注册登录过程.改善用户浏览站点的体验.迅速提高网站注册量和用户数据量.有完善的开发文档与 SDK,方便开发者快速 ...

最新文章

  1. 李飞飞重返斯坦福后的大动作:开启「以人为中心的AI计划」
  2. 半导体理论(第2部分)半导体掺杂
  3. shell下function报错
  4. CodeForces - 1426E Rock, Paper, Scissors(最小费用最大流+最大费用最大流)
  5. this和static
  6. 实验5 类的继承、派生和多态(2)
  7. 决策树ID3、C4.5、CART、随机森林、bagging、boosting、Adaboost、GBDT、xgboost
  8. Mac 从零搭建Android开发环境记录以及提高效率软件推荐
  9. java二叉树删除节点
  10. tp ajax 多图上传,TP5 Ajax上传图片
  11. 器件基础知识——电容
  12. 飞书信终极外贸自建站系统带分销拼团社交裂变自动售后机器人
  13. 一名赣州车主处理“碰瓷”过程,值得认真学习(转帖)
  14. 单片机第1季:零基础学51单片机-蜂鸣器介绍
  15. MATLAB | 画彩色图像的直方图,改对比度,计算均值、方差和信息熵
  16. (SOJ) check if a word is on a given Boggle board
  17. 余弦相似度计算的实现方式
  18. [图形学] 坐标系变换——从世界坐标系到相机坐标系
  19. 强制推到远程git push
  20. 大学必拿的几个证书是什么

热门文章

  1. dll侧加载_WORD打开时出现加载DLL错误解决方法
  2. 塔菲克蓝牙适配器驱动_小身材,大功能,biaze毕亚兹USB蓝牙适配器开箱体验
  3. mysql 创建初始化帐号_MySQL创建SCOTT用户及初始化数据
  4. pygame render怎么显示中文_Pygame游戏——贪吃蛇(完结)
  5. 最新进展 | 深度学习在天气预测中的应用
  6. 推荐:26种NLP练手项目(代码+数据)
  7. 基于python的性能测试工具–locust
  8. .net如何引用该命名空间
  9. PHP+MySQL 跨服务器跨数据库数据拷贝系统
  10. c# 常用数据库封装