目录

常规验证-第三方登录开发攻略


请求地址

管理后台创建软件后获取例:http://demo.huweidun.cn/ac.php?s=8508c320cacb0634c0e241df2f3345fe

公共提交参数

参数名 示例值 参数说明
sid
00362ace-e994-411a-a9bf-f31f9177b6f3
软件SID,后台添加软件后获得。
uuid d6fadd40-7267-4178-9b35-4c8ff61e0c07 封包安全码,每次必须变动,用于校验数据合法性方案之一。
t 1630766594 客户端10位时间戳。
m1 590b782aa78cc3333c84eaa975ab9dc1 封包token(sid+key+t 拼接后取MD5值)
m2 b1dfd79c7cf0f5df8f77c12352af952c 当前程序MD5值,如果开启校验MD5,则此值必填,可于程序运行时动态读取自身MD5值。
m3 f50ebce838ae4b8e212578dd0bc23d9f moduleMd5,购买授权后获得,如使用dll文件,请传入DLLMD5值,同时在”后台-系统-系统设置”中填写。
mcode b4f43bb8-32dc-4d9a-9094-74e39cd61c37 客户端机器码(自行获取机器码,若机器码变动则会提示转绑[如果开启”绑定机器码”])
clientid 36ebe72d-51d8-4252-b99c-37da152717ac 客户端运行ID,此ID在软件退出之前不可变动,也就是每次启动都生成一个新的clientid,软件退出即作废。
webkey 0241946994e62e289e4622b07154b961 通用秘钥(webKey),购买授权后获得。

公共返回参数

参数名 示例值 参数说明
status
success
success为正常,error为错误。
code 200 200为正常,其它为错误。
msg 账号或密码错误. 错误内容,无错误返回空。
token 324daaf6558361aa8f27d607c72262af 返回封包token(提交封包中的m1+返回封包中t,拼接后取MD5值)
t 1630766888 封包时间戳
uuid d6fadd40-7267-4178-9b35-4c8ff61e0c07 提交封包的UUID,原样返回。
result 请查看不同函数说明 数据主体,Json格式,每个函数返回的数据不同,具体请参照对应函数说明。
result_token 627b0d546ccb1d4896373305d74c6933 数据主体token,将数据以ASCII首字母递增排序,拼接键名与键值,拼接完毕后加上通信秘钥一起取MD5值。

传参说明

  • 只需按规则拼接参数后加密传送即可。

  • 封包内参数分为公共参数和函数参数。

  • 公共参数为所有命令均需要提交的参数。

  • 函数参数根据不同函数说明决定提交哪个参数,对应函数内均有说明。


1.通过初始化函数,获取第三方登录类型

  • 通过初始化方法,获取result.oAuthLogin参数,这是一个字符串参数,如包含某值,代表开启了某种登录方式.
  • 包含wechatOP,启用了微信开放平台
  • 包含wechatOA,启用了微信公众平台
  • 包含QQ,启用了QQ互联

2.获取登录必要参数

  • 提交参数

    action=getLoginParams&fun=平台标记
    
  • action固定值:getLoginParams
  • fun平台标记,wechatOP=微信开放平台,wechatOA=微信公众平台,QQ=QQ互联
  • 返回数据

  • result.wechatOpenAppId微信开放平台APPID
  • result.guid标识符,此标识符在后续步骤要用到
  • result.loginUrl登录地址,可直接使用浏览器打开
  • result.unbindUrl解绑地址,可直接使用浏览器打开
  • result.redirectUri登录回调地址,webAPI无用,除非你想自行集成微信开放平台
  • result.unbindUri解绑回调地址,webAPI无用,除非你想自行集成微信开放平台

3.打开登录地址

  • 第二步获取到的loginUrl,使用浏览器打开即可.

4.检测登录状态

  • 此函数需要循环调用,为减轻服务器压力,建议三秒循环一次,当返回状态码为200或280时,应当立即停止循环,并进行下一步处理
  • 提交参数

    action=getLoginParams&fun=平台标记+LoginState&guid=第二步获取到的guid
    
  • action固定值:getLoginParams
  • fun平台标记+LoginState,例如微信开放平台为:wechatOPLoginState
  • guid第二步获取到的GUID
  • 返回数据

  • result.openid扫码用户的微信开放平台unionid,用户的唯一标识,登录 注册 绑定账号需要用到(仅当状态码为200或280时返回).
  • 状态码为200时,微信已经与账户进行关联,直接进入登录流程,状态码为280时,微信未关联账户,此时可以弹出提示,让用户选择注册或是绑定账号.
状态码 状态消息
200 扫码授权成功,且用户存在
280 扫码成功,但用户不存在(需要注册或绑定账号,下方会有说明)

5.登录

  • 检测登录状态的状态码为200时,调用登录函数,传入openid进行登录,登录包与常规登录相同,不同的是将用户名/密码/验证码参数修改为openID与platform
  • 提交参数

    action=login&openID=openid&platform=平台标记&client_version=客户端版本号
    
    action固定值:login
    openID检测登录状态获取到的openid,注意参数名称的大小写
    platform平台标记,wechatOP=微信开放平台,wechatOA=微信公众平台,QQ=QQ互联
    client_version客户端版本号
  • 返回数据

  • 返回数据与正常登录相同,新增返回username字段,为当前openid绑定的用户名

    特别注意:用户名密码登录时,登录token为 <用户名+密码+通信密钥> 取MD5值,三方登录和心跳令牌登录,登录token均为:<用户名+通信密钥> 取MD5值


6.注册

  • 检测登录状态的状态码为280时,给用户做选择,注册或绑定已有账号,此项为注册流程
  • 用三方平台的注册流程与常规注册相同,唯一不同的是额外加上openid和platform参数
  • 提交参数

    action=user&fun=reg&username=用户名&password=密码&safeMode=绑定邮箱或手机&safeCode=注册验证码&referrer=推荐人&code=图文验证码&openID=openid&platform=平台标记
    
  • action固定值:user
  • fun固定值:reg
  • username用户名
  • password密码
  • safeMode绑定邮箱或手机
  • safeCode邮箱或手机的注册验证码
  • referrer推荐人(可控)
  • code图文验证码
  • openID第4步获取到的result.openid
  • platform平台标记,wechatOP=微信开放平台,wechatOA=微信公众平台,QQ=QQ互联
  • 返回数据

  • 此处的注册与正常注册返回数据相同,可参照正常登录的返回数据.

7.绑定已存在账号

  • 检测登录状态的状态码为280时,给用户做选择,注册或绑定已有账号,此项为绑定流程
  • 提交参数

    action=bindOAuth&fun=平台标记&username=用户名&password=密码&code=图文验证码&openid=openid
    
  • action固定值:bindOAuth,注意大小写
  • fun平台标记,wechatOP=微信开放平台,wechatOA=微信公众平台,QQ=QQ互联
  • username绑定的用户名
  • password用户密码
  • code图文验证码,(与注册相同,如果验证码标记包含captcha_reg,则需要填写验证码,否则可留空)
  • openid第4步获取到的result.openid
  • 返回数据

  • code状态码,200为绑定成功,非200请查看错误提示
  • msg错误提示,如果状态码非200,此字段将返回错误信息
状态码 状态消息
200 绑定成功,请返回登录.
280 请输入用户名
281 请输入密码
282 openid不能为空
283 绑定失败,只要参数传递正确,不会出现此错误码.
284 无效操作,fun参数传参错误.

8.解绑(解除关联)

  • 当用户更换账号时,可以提供解除关联,以便用户绑定新账号.
  • 直接使用浏览器打开第二步获取到的result.unbindUrl,用户扫码即可解除绑定.