# 简介

该文档主要用于说明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 参数完成登录认证。

1659510393811.png

创建人:admin