# 简介
该文档主要用于说明M3被第三方平台唤起的命令以及参数传递完成服务端三方登录实现。 三方应用打开M3定义的打开 APP URL 为 seeyon://m3 , 调用者可以根据自己的业务逻辑完成登录认证,M3 定义有标准穿透参数,如果三方平台按照 M3 定义的标准参数唤起,M3 客户端将会对参数处理,按照下文(参数说明)进行一些特殊范式的登录(如:用户名/密码方式),如果按照其余的格式传递,M3将不会对参数处理,会直接封装后发送给后台登录认证接口。
# 一、参数说明
# 1.1 M3标准格式参数
scheme:按照 URL 方式跳转 URL 固定为 seeyon://m3,带参数的跳转方式:seeyon://m3?loginParams=XXXXXXX
loginParams:调用登录方法所需要的参数为 JSON 格式
注意: loginParams 参数的值必须经过 URL Encoder 的方式转码
参数说明:
参数名 | 说明 | 是否必填 |
---|---|---|
name | 用户名 | 否 |
password | 密码 | 否 |
ticket | 单点登录 ticket (一般为第三方系统做单点登录认证的 Ticket) | 否 |
serverUrl | M3 服务器地址(例:http://192.168.10.236:8085 (opens new window))如果指定了该参数,会登录到指定的M3服务器;如果不指定该参数,登录到 M3 当前设置的服务器。 | 否 |
ext | 扩展参数 | 否 |
例:
{
"name": "test1",
"password": "tpassword",
"ticket": "xxxxticket",
"serverUrl": " http://192.168.10.236:8085",
"ext":"扩张参数"
}
如果传递了 name 和 password,M3 将使用 name 为登录名称,password 为密码,进行标准功能的登录。 如果传递了 ticket,M3 将按照 A8 标准的三方认证类 SSOTicketLoginAuthentication.java 类进行单点登录。 如果不传,M3 客户端将会把整过 loginParams 以参数的形式传递给M3的登录接口,需要开发者按照 A8 登录集成功能进行集成(见示例:三、服务器单点登录参考示例)。
# 1.2 调用者自定义格式
scheme:按照 URL 方式跳转 URL 固定为 seeyon://m3,可选参数:serverUrl(参数说明见“M3标准格式参数”) 带参数的跳转方式:seeyon://m3?key1=XXXXXXX&key2=XXXX&key3=XXXX M3将把所有的参数封装为一个 JSON 对象,以 Key 为 loginParams 传递给后台登录接口。
# 二、M3定义的参数唤醒举例
# 2.1 Android
本地程序调用方式
方式一:
String params = "{" +
"\"name\": \"test1\"," +
"\"password\": \"tpassword\"," +
"\"serverUrl\": \" http://192.168.10.236:8085\"," +
"\"ticket\": \"xxxxticket\"," +
"\"ext\": \"扩张参数\"" +
"}";
params =URLEncoder.encode(params,"utf-8");
String url = "seeyon://m3?loginParams="+params;
Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(in);
方式二:
String params = "{" +
"\"name\": \"test1\"," +
"\"password\": \"tpassword\"," +
"\"serverUrl\": \"http://192.168.10.236:8085\"," +
"\"ticket\": \"xxxxticket\"," +
"\"ext\": \"扩张参数\"" +
"}";
Intent in = new Intent();
in.setComponent(new ComponentName("com.seeyon.cmp", "com.seeyon.cmp.ui.LoadActivity"));
in.putExtra("loginParams", params);
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(in);
网页程序调用方式
var params = "{" +
"\"name\": \"test1\"," +
"\"password\": \"tpassword\"," +
"\"serverUrl\": \"http://192.168.10.236:8085\"," +
"\"ticket\": \"xxxxticket\"," +
"\"ext\": \"扩张参数\"" +
"}";
params =URLEncoder.encode(params,"utf-8");
<a href="seeyon://m3?loginParams={params}">打开M3</a>
# 2.2 iOS
iOS跳转URL: seeyonM3Phone://m3?loginParams=xx
调用方式
// 拼接带参数的 URL 字符串
NSString *urlStr = @"seeyonm3phone://m3?loginParams={ \"name\": \"zlcs1\", \"password\": \"123456\", \"ticket\": \"ticket\", \"serverUrl\": \" http://192.168.10.236:8085\", \"ext\":\"extent\" }";
// 将 URL 字符串进行转码,并创建 URL 对象
NSURL *url = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
// 调用 sharedApplicaton openURL 方法通过 URL 唤起 M3
[[UIApplication sharedApplication] openURL:url];
# 三、服务端单点登录参考示例
M3 登录集成完全遵循 V5 登录验证逻辑可参见开放平台【登录集成(http://open.seeyon.com/book/ctp/ji-cheng-chang-jing/deng-lu-ji-cheng.html (opens new window))】 这里的示例是自己实现登录认证的方式,如果采取了传递 userName/password 或者是 ticket 方式,A8 已经默认实现,请按照标准范式使用。 例:实现A8三方认证接口类 CustomLoginAuthentication.java 取出跳转命令传递的参数 loginParams 参数完成登录认证。