第三方登录 操作文档

 

元素

view

代码段

视口

1. 获取已配置的登录方式

地址请求方式参数简介
/v/auth/oauth2/user/providers.jsonGETct=public_json获取可用登录方式或作为接口返回登录方式的数组

 

返回值: 以下为当前支持的所有登录方式

{
    "_runCommand":[
        {
            "command":"updatelv",
            "params":[
                {
                    "providers":[
                        {
                            "name":"微信扫码登陆",
                            "provider":"wechatkf",
                            "icon":"/img/auth/oauth/icon64_appwx_logo.png"
                        },
                        {
                            "name":"微信App登陆",
                            "provider":"wechatapp",
                            "icon":"/img/auth/oauth/icon64_appwx_logo.png"
                        },
                        {
                            "name":"微信登陆",
                            "provider":"wechat",
                            "icon":"/img/auth/oauth/icon64_appwx_logo.png"
                        },
                        {
                            "name":"qq App登陆",
                            "provider":"qqapp",
                            "icon":"/img/auth/oauth/icon64_appqq_logo.png"
                        },
                        {
                            "name":"qq PC登录",
                            "provider":"qq",
                            "icon":"/img/auth/oauth/icon64_appqq_logo.png"
                        },
                        {
                            "name":"Twitter登陆",
                            "provider":"twitter",
                            "icon":"/img/auth/oauth/icon64_tw_logo.png"
                        },
                        {
                            "name":"",
                            "provider":"facebook",
                            "icon":"/img/auth/oauth/icon64_fb_logo.png"
                        },
                        {
                            "name":"微博App登陆",
                            "provider":"weiboapp",
                            "icon":"/img/auth/oauth/icon64_appwb_logo.png"
                        },
                        {
                            "name":"微博登陆",
                            "provider":"weibo",
                            "icon":"/img/auth/oauth/icon64_appwb_logo.png"
                        }
                    ]
                }
            ]
        }
    ],
    "success":true
}

注意:

1)这里列出的为所有登录方式,不代表从接口中可以获取所有方式,需要后台设置登录方式才可以被接口获取到,之后会根据平台判断返回可用方式

2)图标仅为参考用,也可自行判断生成可用登录方式,返回自定义图标

3)除provider属性其余属性都是可以自行修改的,但需注意模块更新后修改会被覆盖

2. 发起登录请求

地址请求方式参数简介
/auth/oauth2/user/login.htmlGETprovider=XXX发起登录请求

 

provider的值为通过providers.json视口所返回的.例如 qq,wechat

操作过程

配置

  • [可选]站点编辑--编辑 --编辑全站配置文件
  •   {
      "oauth2":{
        "rurl":"用户通过第三方登录成功跳转到的页面(相对路径)", 
        "role":["用户通过第三方登录成功后在网站上的默认角色"]
      }
    }
      

    如果不做配置,默认跳首页,注意当前直接给接口rurl传值跳转到目标页面无法生效。

    第一步: 登录方式列表动态化

  • 视口地址: /v/auth/oauth2/user/providers.json
  • 请求方式: GET
  • 返回数据: 参考上文的接口说明.动态化提示:数组绑定
  • 第二步: 登录按钮动态化

  • 视口地址: /auth/oauth2/user/login.html?provider=xxx
  • 请求方式: GET
  • 返回数据: 参考上文的接口说明.动态化提示: 通常就是页面跳转.
  • 用户登录成功后可以获取以下信息除uid,role之外其他所有字段都可能为空,可以通过provider判断当前用户是以何种方式登录的,正常登录为local

      req.user = {
      "uid": "uid", // 用户id. 注意user表中已经自动创建用户了.
      "_phonenumberchecked": "no",
      "_emailchecked": "no",
      "_status": "normal",
      "lang": "cn",
      "role": [
        "user"
      ],
      "provider": 'wechat|qq|weibo|fb|twitter',// 登录方式
      "openid": 'openid', // 登录平台下的唯一标示
      "nickname": 'nickname', // 昵称
      "gender": '女', // 性别
      "city": 'city', // 城市
      "province": 'province', // 省份
      "country": 'country', // 国家
      "unionid": 'unionid', // 唯一标示
      "headimgurl": 'headimgurl' // 头像地址
      
    注意

    1)绑定用户与登录其实质没有区别,都是通过调用/auth/oauth2/user/login.html?provider=xxx接口,实现登录,此时已经将openid存储在用户表中,当前的第三方登录可以通过 providerNameopenid_noana字段判断登录是否成功,openid也同样存有用户的openid

    2)后台的配置项有一项全局配置,自定义关联时不会修改用户信息,但是自定义关联一定要自行接管创建用户的动作