# 配置登录授权 Scope

本文介绍几种常见社会化登录授权范围参数含义。

# Scope 简介

许多社会化登录都基于 OAuth 2.0 协议,其中 Scope 的含义是:需要请求用户授予的权限。例如,当我们希望用户授予我们他的 Github 仓库读写权限,我们在发起授权登录时,必须要在 scope 参数中加入 repo 字段。

Authing 控制台 (opens new window) > 连接身份源 - 社会化登录选择一个社会化登录选项卡,勾选发起授权登录时请求用户授予的权限:

# Github

Scope 参数 描述
(no scope) 授予对公开信息只读访问权限(包括公共用户配置文件信息,公共仓库信息和 gist)
repo 授予对私有和公有仓库完全访问权限。 这包括对代码,提交状态,仓库和组织项目,邀请,协作者,添加团队成员身份,部署状态的读 / 写访问权限,以及公开和私有仓库和组织仓库的 Webhook 读 / 写访问权限。 还授予管理用户项目的能力。
repo:status 授予对公开和私有仓库提交状态读 / 写访问权限。 仅在授予其他用户或服务对私有仓库提交状态的访问权限,而无需授予对代码的访问权限时,此作用域才是必需的。
repo_deployment 授予访问公开和私有仓库部署状态的权限。 仅在授予其他用户或服务对部署状态的访问权限,而不授予对代码的访问权限时,才需要此作用域。
public_repo 仅限于对公开仓库的访问。 这包括对代码,提交状态,仓库项目,协作者以及公开仓库和组织的部署状态的读 / 写访问。 对公开仓库加注星标也需要此 scope。
repo:invite 授予接受 / 拒绝邀请从而在仓库上进行协作的能力。 仅在授予其他用户或服务邀请权限,而不授予对代码的访问权限时,才需要此作用域。
admin:repo_hook 授予对公开和私有仓库中的仓库 hook 的读取,写入,ping 和删除访问权限。 repo 和 public_repo 授权范围会授予对仓库的完全访问权限,包括仓库 hook。 使用 admin:repo_hook 授权范围将授权限制为仓库 hook。
write:repo_hook 授予对公开或私有仓库中的 hook 的读取,写入和 ping 的访问权限。
read:repo_hook 授予对公开或私有仓库中的 hook 的读取和 ping 访问权限。
admin:org 全部管理组织及其团队,项目和成员的权限。
write:org 对组织成员、组织项目和团队成员身份的读写访问权限
read:org 对组织成员、组织项目和团队成员身份的只读访问权限
admin:public_key 全部管理公钥的权限
write:public_key 新建、查看公钥列表、详情的权限
read:public_key 查看公钥列表、详情的权限
admin:org_hook 授予对组织 hook 的读取,写入,ping 和删除访问权限。 注意:OAuth 令牌仅能对那些由 OAuth 应用创建的组织 hook 执行操作。 个人访问令牌只能在用户自己创建的组织 hook 上执行这些操作。
gist 授予对 gist 的写权限
notifications 授予: * 用户通知的读权限 * 将 threads 标记为已读的权限 * 对仓库进行 watch 和 unwatch 的权限 * 读 / 写和删除 thread 订阅的权限
user 授予对用户资料的读写权限。注意此 scope 包含了 user:emailuser:follow
read:user 授予对用户资料的读取权限
user:email 授予对用户 email 地址的读取权限
user:follow 授予对用户 unfollow 其他用户的权限
delete_repo 授予删除用户可管理的仓库的权限
write:discussion 授予读 / 写团队讨论的权限
read:discussion 授予团队讨论的只读权限
write:packages 授予访问权限以在 GitHub Packages 中上传或发布软件包。 有关更多信息,请参见 GitHub 帮助文档 (opens new window)中的“发布软件包”。
read:packages 授予访问权限以从 GitHub Packages 中下载或安装软件包。 有关更多信息,请参阅 GitHub 帮助文档 (opens new window)中的“安装软件包”。
delete:packages 授予访问权限以从 GitHub Packages 中删除软件包。 有关更多信息,请参阅 GitHub 帮助文档 (opens new window)中的“删除软件包”。
admin:gpg_key 管理 GPG 密钥的全部权限
write:gpg_key 新建、查看 GPG 密钥列表、详情的权限
read:gpg_key 查看 GPG 密钥列表、详情的权限
workflow 授予添加和更新 GitHub Actions 工作流文件的能力。 如果同一仓库中的另一个分支上存在相同的文件(具有相同的路径和内容),则可以在没有此作用域的情况下提交工作流文件。

# 微信移动端网页

Scope 名称 描述
snsapi_base 授予通过 code 换取 access_token、refresh_token 和已授权 scope 的能力
snsapi_userinfo 获取用户个人信息的权限
snsapi_login 仅用于 PC 端扫码登录

其中 snsapi_base 属于基础接口,若应用已拥有其它 scope 权限,则默认拥有 snsapi_base 的权限。使用 snsapi_base 可以让移动端网页授权绕过跳转授权登录页请求用户授权的动作,直接跳转第三方网页带上授权临时票据(code),但会使得用户已授权作用域(scope)仅为 snsapi_base,从而导致无法获取到需要用户授权才允许获得的数据和基础功能。

使用 snsapi_base 会跳过用户的确权点击,后续使用 code 换取 access_token,用 access_token 也能够换取到用户信息

# 新浪微博

Scope 参数 描述
all 请求下列所有 scope 权限
email 用户的联系邮箱,接口文档 (opens new window)
direct_messages_write 私信发送接口,接口文档 (opens new window)
direct_messages_read 私信读取接口,接口文档 (opens new window)
invitation_write 邀请发送接口,接口文档 (opens new window)
friendships_groups_read 好友分组读取接口组,接口文档 (opens new window)
friendships_groups_write 好友分组写入接口组,接口文档 (opens new window)
statuses_to_me_read 定向微博读取接口组,接口文档 (opens new window)
follow_app_official_microblog 关注应用官方微博,该参数不对应具体接口,只需在应用控制台填写官方帐号即可。填写的路径:我的应用-选择自己的应用-应用信息-基本信息-官方运营账号(默认值是应用开发者帐号)

# QQ

Scope 参数 描述
get_user_info 获取登录用户的昵称、头像、性别,接口文档 (opens new window)
list_photo 获取用户 QQ 空间相册中的照片列表,接口文档 (opens new window)
add_album 在用户的空间相册里,创建一个新的个人相册,接口文档 (opens new window)
upload_pic 上传一张照片到 QQ 空间相册,接口文档 (opens new window)
list_album 获取用户 QQ 空间相册列表,接口文档 (opens new window)
get_vip_rich_info 获取 QQ 会员的高级信息,接口文档 (opens new window)
get_vip_info 获取 QQ 会员的基本信息,接口文档 (opens new window)

# 接下来你可能需要:

刷新 Github、微信等三方的 token:

Authing - Node/JavaScript