打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

NS WIKI:OAuth授权认证

NS WIKI · Switch玩机百科
OAuth2 用户批准请求

本站支持OAuth授权认证[1]

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

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

创建你的应用

前往本站 OAuth客户端注册 页面,点击 提议新的OAuth 2.0客户端

请注意:部分程序需要邮箱作为用户唯一区分,请不要选错 请求的权限类型授权码 是 access_token,刷新令牌 是refresh_token 。

填写好信息后点击 提议客户端 ,之后请等待审批。

在这期间你应该记录下来 消费方key 即 client_id,消费方令牌 即 client_secret

  • 若你忘记了 client_id,可以前往 OAuth应用程序列表,点击你的OAuth应用标题右边的 详情,在最下方 OAuth客户端日志,会记录 消费方key。
  • 若你忘记了 client_secret,可以前往 OAuth应用程序列表,点击你的OAuth应用标题右边的 详情,在最顶端点击 更新客户端,勾选 将密钥重置为一个新值 然后 更新客户端,这时会显示 您已被分配了消费方令牌xxxxx。请记下以供未来参考

审批应用

前往本站 OAuth应用程序管理 可以同意OAuth的注册请求。

使用OAuth

请注意,本站只对身份认证功能的OAuth2.0方式做了测试。若想了解更多端点请访问 扩展:OAuth(开放授权)

请求端点 描述 可用参数 效果
https://nswiki.cn/rest.php/oauth2/authorize?client_id={client_id}&response_type={response_type} [GET] 请求用户同意登录请求。 {response_type}

{client_id}

如果用户批准了你的请求,将会访问回调地址并带上参数?code=
https://nswiki.cn/rest.php/oauth2/access_token [POST] 使用code获取用户长期Token和Refresh Token。 请求体:
"grant_type" = "authorization_code"
"code" 可选
"client_id" 可选
"client_secret" 可选
"refresh_token" 可选
将回调地址中的code填入"code",请求服务器,将返回:
{
  "token_type": "Bearer",
  "expires_in": 3600,
  "access_token": "access_token",
  "refresh_token": "refresh_token"
}
当超过expires_in期限后,可以使用"refresh_token"重新获得"access_token"。将refresh_token填入,请求服务器。
https://nswiki.cn/rest.php/oauth2/resource/profile [GET] 使用access_token 获取用户资料。 请求头:
headers = {
    "Authorization": "Bearer {access_token}"
}
将请求头的 "Authorization" 设置为 "Bearer {access_token}" ,请求服务器,返回:
{
    "sub": "3",
    "username": "Huangsam04",
    "editcount": 168,
    "email_verified": true,
    "confirmed_email": true,
    "blocked": false,
    "registered": "20260217014632",
    "groups": [
        "*",
        "user"
    ],
    "rights": [],
    "grants": [
        "mwoauth-authonlyprivate"
    ],
    "realname": "",
    "email": "2097647121@qq.com"
}
我们为您提供服务需要使用Cookie,使用我们的服务即表示您同意我们使用Cookie。