更新日期:     浏览次数:

1. 云之家扫码登录接入指南

1.1. 准备工作

  1. 基于云之家OAuth2.0授权协议构建云之家二维码授权登录;
  2. 拥有云之家账号,以及云之家开发者账号(参考如何成为云之家开发者?);
  3. 用云之家开发者账号登录开发者后台,注册一个云之家平台级应用或者在应用中心新建一个企业自建应用,配置移动端访问地址为https://yunzhijia.com/opencloud/openthird/qrlogin,并成功获取appId
  4. 开发者后台首页--应用管理--详细配置 数据授权选项选择需要

1.2. 授权流程

云之家二维码登录授权旨在通过云之家扫码登录第三方网站或应用,在云之家扫码之后,重定向到第三方业务系统,同时获取appId和ticket参数, 通过这两个参数获取用户信息之后,与第三方进行账号绑定,从而完成二维码登录授权的流程,具体授权流程如下:

  1. 第三方获取云之家授权登录请求,云之家用户授权第三方应用之后,会重定向到第三方网站或拉起应用
  2. 通过URL获取tikcet和appId
  3. 通过云之家开放API获取云之家APP当前用户信息,完成云之家与第三方系统绑定

云之家二维码访问地址示例:https://www.yunzhijia.com/opencloud/openthird/qrconnet?appid=10780&redirect_uri=http%3a%2f%2fclub.kingdee.com%2fclub%2fnewclub&state=12345678

云之家二维码访问地址示例(带自定义样式访问,在链接最后追加参数csshref):https://www.yunzhijia.com/opencloud/openthird/qrconnet?appid=10780&redirect_uri=http%3a%2f%2fclub.kingdee.com%2fclub%2fnewclub&state=12345678&csshref=https%3a%2f%2fwww.yunzhijia.com%2fopencloud%2fres%2fcss%2fdemo.css

请求参数说明:

参数名称 数据类型 必选 说明
appid String 平台级应用Id
redirect_uri String 第三方网站或者应用链接地址(必须urlencode之后)
state String 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于
防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简
单的随机数加session进行校验
csshref String 用于扫码登录的自定义CSS页面样式链接地址(必须urlencode之后)
cssdemo:https://www.yunzhijia.com/opencloud/res/css/demo.css
urlencode之后为上面示例中csshref:https%3a%2f%2fwww.yunzhijia.com%2fopencloud%2fres%2fcss%2fdemo.css

返回说明:

云之家扫码登录成功返回示例:http://club.kingdee.com/club/newclub?appid=10780&ticket=APPURLWITHTICKET3a5e5632ff7e7e1d45e93255e22e343a&expiretime=3598&state=12345678

用户允许授权后,将会重定向到redirect_uri的网址上,并且带上appid,ticket,expiretime 以及state参数,具体参数含义如下表:

参数名称 数据类型 必选 说明
appid String 平台级应用Id
ticket String 云之家扫码登录成功后重定向到第三方后url携带的参数
expiretime String ticket剩余有效时间(默认3600s)
state String 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于
防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简
单的随机数加session进行校验

1.3. 第三方请求示例分析:

登录金蝶社区:http://club.kingdee.com/club/newclub

第一步:注册云之家账号和云之家开发者账号

第二步:申请平台级应用,获取应用ID 和 AppSecret

第二步:生成云之家二维码

第三步:通过iframe嵌套二维码地址到第三方业务系统首页(http://club.kingdee.com/club/newclub

示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Parent Page</title>
        <script language="javascript" type="text/javascript">
            function parenttest() {
                //alert("这是父页面的方法!");
            }
            function btnClick() {
            //alert("启动调用子页面的方法");
                document.getElementById("childframe").contentWindow.childtest();
            }
    </script>
</head>
<body>
   <div style="margin:auto;">
       <h1>This is the Parent Page.</h1>
       <input type="button" value="调用子页面的方法"  onclick="btnClick()"/>
    </div>
    <div style="margin:auto;">
       <iframe style="width:300px; height:300px;" id="childframe" src="https://www.yunzhijia.com/opencloud/openthird/qrconnet?appid=10780&redirect_uri=https%3a%2f%2fopen.yunzhijia.com&state=12345678"></iframe>
    </div>
</body>
</html>

第四步:通过云之家开放平台API https://open.yunzhijia.com/gitbook-wiki/server-api/userContext.html获取云之家app当前用户信息

第五步:完成第三方系统和云之家用户的绑定

第六步:完成云之家第三方系统扫码登录

效果图如下:

qrLogin

results matching ""

    No results matching ""