智简魔方文档

三方登录(OAuth)

本文说明三方登录插件的开发流程与回调地址配置。

魔方开发者交流群:682866869

文件命名

  1. 在 modules/oauth/ 下新建登录插件目录。例如开发微信登录,创建 modules/oauth/weixin/。
  2. 在插件目录中创建同名文件 weixin.php,类名也应与目录名一致。

编写插件(以微信登录为例)

  1. 创建命名空间:
namespace oauth\weixin;
  1. 创建与文件名一致的 weixin 类。

  2. 配置下列四个必需函数,函数名不可更改;其他功能可自行扩展:

  • 插件信息:meta()
  • 接口配置:config()
  • 生成授权地址:url($params)
  • 处理回调:callback($params)

插件信息函数 meta()

参数

键名(固定不能修改)是否必填描述
name是插件名称
description否插件描述
author否开发者
logo_url是接口图片地址,会在后台设置/客户登录页,绑定账号页面显示这个图片。

格式如下:

return [
    'name' => '微信登录', // 插件名称
    'description' => '微信登录', // 描述
    'author' => '智简魔方', // 开发者
    'logo_url' => 'weixin.svg', // 接口图片地址
];

备注:meta() 返回的是一维数组

插件接口配置函数 config()

参数

键名(固定不能改)是否必填描述
type是type 值 有 text ,textarea(只能这两种类型)
name是name 的值自定义,在下面的 url 和 callback 中会使用到
desc否描述信息

格式如下:

return [
    'App Key' => [
        'type' => 'text',
        'name' => 'appid',
        'desc' => '应用唯一标识,在微信开放平台提交应用审核通过后获得',
    ],
    'App Secret' => [
        'type' => 'text',
        'name' => 'appSecret',
        'desc' => '应用密钥 AppSecret,在微信开放平台提交应用审核通过后获得',
    ],
];

备注:config() 返回的是二维数组 上面的例子中的 App Key 和 App Secret 不是固定的,自定义

生成授权地址函数 url($params)

接收参数$params ,$params 是数组,包含了下面两种信息

①数组包含了 config()函数中的所有参数(config 函数中 name 的值就是数组键,

②外加一个$params['callback']回调地址

返回的类型:string

返回的数据:三方登录地址

回调函数 callback($params)

接收参数$params ,$params 是数组,包含了下面三种信息

①数组包含了 config()函数中的所有参数(就是 config()函数中的 name 的值是这里的键)

②外加一个$params['callback']回调地址

③三方登录成功后跳转返回的参数

返回的类型:array

返回的数据:

键名是否必填描述
openid是三方登录授权成功后返回的用户唯一标识
callbackBind否all,邮箱和手机号任选绑定。
bind_mobile,输入手机号绑定,
bind_email,输入邮箱绑定
login,三方授权登录后跳转到会员中心,直接登录,会创建一个邮箱和手机号是空的用户并绑定该插件模块。
不返回这个参数就会默认是all,(如果是在会员中心绑定账号,该参数会忽略,只有在第一次用相应的三方登录的时候才会判断这个参数)
data否用户昵称、性别、省份、城市和头像等用户资料;完整格式见下方响应示例。
return [
    'openid' => $openid['openid'], // 必须
    'data' => [
        'username' => '用户昵称',
        'sex' => '性别,1 男、2 女;其他值需要转换',
        'province' => '省份',
        'city' => '城市',
        'avatar' => '头像图片',
    ],
    'callbackBind' => 'all',
];

回调地址说明

  1. 申请第三方登录 API 时,如需填写回调地址,使用当前域名加 /oauth/callback/ 和插件文件名。例如微信扫码登录:
http://www.xxx.com/oauth/callback/weixin

有的要求填回调域,就填当前域名网址,例如:

http://www.xxx.com/
  1. 插件目录名、文件名和类名应保持一致。