网站适配手机怎么做,网站内部建设和程序,深圳百度竞价推广,网销怎么找客户资源使用 Authing 可以轻松接入许多社会化登录#xff0c;同时无需翻看社会化登录提供方的繁琐接入文档#xff0c;让开发者更加专注业务从而提升开发效率。这看起来很方便#xff0c;But#xff0c;通过 Authing 登录的社会化登录用户#xff0c;无法获取更高级的权限#x… 使用 Authing 可以轻松接入许多社会化登录同时无需翻看社会化登录提供方的繁琐接入文档让开发者更加专注业务从而提升开发效率。这看起来很方便But通过 Authing 登录的社会化登录用户无法获取更高级的权限以 Github 举例授权域功能上线之前通过 Authing 登录的 Github 用户无法授权读写仓库、读写 Issues 等权限此功能上线后通过 Authing 登录的 Github 用户将拥有这些高阶权限的授权能力。如 Github 授权域(图中的 Scope 参数)QQ 授权域(图中的 Scope 参数)微博授权域(图中的 Scope 参数)开发者只需要勾选以上 checkbox 就可以很方便的拥有这些能力授权流程用户通过 Authing 登录用户在 Authing 登录界面中点击「使用 Github 登录」用户通过 Github 登录后 Authing 将 Github 的信息集成到 Authing 用户信息中Authing 返回 Code 给开发者配置好的 redirct_uri开发者使用 Code 换取 access_token开发者使用 access_token 换取用户信息开发者在用户信息中获取用户在 Github 平台的 access_token然后获取操作 Github 的更高级权限开发者完成用户认证并开始引导用户执行业务流程下图是一个简化流程开启社会化登录授权域创建 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:5008: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 方法来刷新社会化登录 tokenconst Authing require(authing-js-sdk);const userPoolId 你的用户池 IDconst secret 你的用户池 Secretlet 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:0408:00}由于 Github 不提供 refresh_token 并且 access_token 长期有效所以此处其实并未真正刷新 token。其他社会化登录方如微信、QQ 提供刷新 token 功能通过 SDK 刷新 token 时Authing 会发出刷新 token 请求并返回新的 accessToken 和 refreshToken。总结以上就是 Authing Github 社会化登录的使用方式。总结起来Authing 帮你省去了服务器处理 OAuth 2.0 协议中 code 换 tokentoken 换用户信息的过程能够直接将用户信息返回给你。同时 Authing 易用的 SDK 能够帮你快速接入获取、刷新用户社会化登录 token 的功能。如果你还需要其他社会化登录比如微博、微信那么此时的身份整合与管理作用的优势就体现出来同时你也无需阅读国内质量参差不齐的授权登录开发文档。你只需要填写配置信息Authing 会帮你拼接授权 URL 链接Authing 会帮你处理 OAuth 2.0 协议中换取用户信息的繁琐过程并将用户信息直接返回给你的业务地址Authing 会帮你绑定不同的第三方社会化登录提供商Authing 为你提供简单易用的 SDK轻松获取、刷新用户的社会化登录 token。