网站应用第三方登录开发指南(client credentials模式)

basehost :open.zafu.edu.cn/oauth/token?grant_type=client_credentials&client_id=aiqiyi&client_secret=123456 (开发测试地址,https)

准备工作

网站应用第三方登录是基于OAuth2.0协议标准构建的第三方OAuth2.0授权登录系统。

在进行第三方OAuth2.0授权登录接入之前,开发者需要在第三方开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,获得相应的AppID和AppSecret。申请第三方登录且通过审核后,即可开始接入流程。

授权流程说明

第三方OAuth2.0授权登录让第三方用户使用第三方身份安全登录第三方应用或网站。第三方用户授权登录后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行第三方开放平台授权关系接口调用,从而可实现获取第三方用户基本开放信息和帮助用户实现基础开放功能等。

第三方OAuth2.0授权登录目前支持client credentials模式,适用于拥有Web端的应用授权。该模式整体流程为:

    1. 第三方发起第三方授权登录请求,第三方用户允许授权第三方应用后,第三方会拉起应用或重定
    向到第三方网站,通过API换取access_token;

    2. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

第一步:请求access_token

第三方使用网站应用授权登录前请注意已获取相应网页授权作用域,则可以通过在PC端打开以下链接:
http://open.zafu.edu.cn/oauth/token?grant_type=client_credentials&client_id=aiqiyi&client_secret=123456

参数名称 必填 说明 备注
grant_type: 授权模式 Oauth2支持4种授权模式,目前本系统支持客户端(client_credentials)模式
client_id: 建议5-20位;|开发者使用api唯一标识 第三方提供的app_key
client_secret: 开发者使用api唯一标识对应的密码 第三方提供的Secret Key

scope使用注意: base_api(默认值)可以访问基础api(/userinfo)且支持静默模式不弹出授权提醒, all 可以所有开放api, manager(第三方管理员)

返回结果:

{
    "access_token": "382f55ea-2c6b-4b2f-b950-534339a9bfef",
    "token_type": "bearer",
    "expires_in": 43199,
    "scope": "get_user_info get_fanslist"
}

错误返回样例:

{
    "errcode":40029,
    "errmsg":"invalid code"
}
参数名称 说明 备注
errcode 错误编码
errmsg 错误提示

第二步:刷新access_token(如果需要)

由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新。当refresh_token失效之后,需要用户重新授权。

  • URL: https://open.zafu.edu.cn/oauth/token
  • 需要授权:
  • 请求类型: HTTP POST
  • 请求数据类型:JSON(application/json)
参数名称 必填 说明 备注
grant_type refresh_token[固定参数] 换取新token|开发者使用api唯一标识
client_id 开发者使用api唯一标识
client_secret 获取accesstoken秘钥
refresh_token 上次获取token中反馈的refresh_token
url: 'https://open.zafu.edu.cn/oauth/token',
 {
    "grant_type": "refresh_token",
    "client_id": "your clientid",
    "client_secret": "appkey",
    "refresh_token": "***********"
 }
  • 换取响应 [POST]

    • Response 200 (application/json)
{
    "access_token": "xN2836yQAQfDURxVPds0IM9vfUk3IJC5",
    "expires_in": 604800,
    "scope": "demo",
    "refresh_token": "VFlAp82EUWNQJkokRvoELSPhPpO3pSPS",
    "token_type": "Bearer"
}

第三步:获取用户信息

  • URL: https://open.zafu.edu.cn/userinfo?access_token=tokenstring
  • 需要授权:
  • 请求类型: HTTP GET
参数名称 必填 说明 备注
access_token client credentials 模式下获取的 access_token

返回正确结果

 {
    "name": "ABC",
    "schoolcode": "ruijie",
    "student_number": "panyuntao",
    "sex": "boy",
    "mood_words": "",
    "nick_name": "",
    "organization_id": "234",
    "organization": "第三方大学",
    "uid": "099",
    "identity": "teacher",
    "wx_openid":"abcd",
    "openid": "",
    "unionid": "",
    "schoolname": "第三方大学",
}

返回错误结果

{   "code":401/403/500,
    "data":"Unauthorized",
    "errno":"100401"//内部错误代码}
参数名称 说明 备注
errcode 错误编码
errmsg 错误提示

访问权限限制

访问级别:普通接口
频次限制:无

授权scope:base_api