功能介绍
微信、QQ帐号登录定制版,是在ALL-IN-ONE SDK 基础上集成了微信登录和QQ登录的扩展版ALL-IN-ONE SDK。
应用方可以根据需要,接入该版本的SDK,即可包含微信、QQ等常用第三方登录,快速接入,避免重复开发。
客户端接入
第三方登录功能,是在ALL-IN-ONE SDK 基础上集成了微信登录和QQ登录的扩展版ALL-IN-ONE SDK。
应用方可以根据需要,接入该版本的SDK,即可包含微信、QQ等常用第三方登录,快速接入,避免重复开发。
接入准备
要在微信、QQ对应的开放平台 注册应用的 appid和秘钥,进行配置,方可使用。
对接人: 倪梦经 张香桃
1 .SDK及资源文件下载
SDK SDK-third-2.1.9.6.zip
Demo Demo-third.zip
版本更新
版本号 | 更新内容 | 发布时间 |
---|---|---|
2.1.9.6 | 登录模块更新内容: 1)更新登录域名为lianmeng.link |
2019-10-14 |
2.1.9.3 | 数据模块更新内容: 1)添加WKUDID 升级模块更新内容: 1)升级支持自定义弹框 2)增加存储权限校验 |
2019-06-03 |
2.1.8.20 | 修复微信登录bug | 2019-04-29 |
2. 配置AndroidManifest.xml
<activity
android:name=".WkEntryActivity"
android:exported="true" >
<intent-filter>
<action android:name="wifi.intent.action.SDK_RESULT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.lantern.auth.app.ThirdLoginActivity"
android:exported="false"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<action android:name="wifi.intent.action.LOGIN_THIRD" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
1)微信:
<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" >
</activity>
2)QQ:
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="tencent1106856791(业务方申请的 qq appid)" />
<!-- 100380359 100381104 222222 -->
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="behind"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
3,导入资源文件
导入微信,QQ相关jar包
4,代码调用
1,初始化all-in-one SDK
2,调用登录 设置第三方app ID
ThirdAPPID.setWXAPPID("wxfcaecb4fa6dadaea");微信appID
ThirdAPPID.setQQAPPID("1106856791");QQ appID
WkLogin.login(Activity act, String loginType, String scope); loginType :微信 WX,QQ QQ,微博 WB;scope 授权信息 可以为空,具体已第三方scope 为准。
3,处理回调结果
微信回调在 WXEntryActivity,具体同微信官方文档一致。
QQ回调在 WkEntryActivity中,具体请看demo中相关调用
demo入口com.wifikey.sdk.samples.login.ThirdLoginActivity类
private void handleIntent(Intent intent) {
WkSDKResp resp = WkSDKResp.decode(intent);
if (WkSDKFeature.THIRD_LOGIN.equals(resp.mWhat)) {
if (WkSDKFeature.THIRD_LOGIN.equals(resp.mWhat)) {
//微信 QQ 微博 登录信息回调处理
/*if ("WX".equals(resp.loginType)) {
wxLogin(resp);
} else if ("QQ".equals(resp.loginType)) {
String token ="",openId ="";
try {
JSONObject jsonObject=new JSONObject(resp.mData);
token=jsonObject.getString("access_token");
openId = jsonObject.getString("openid");
//通过 qq返回的 token 和openid 在服务端获取 用户信息, 详细信息见 服务端文档
} catch (JSONException e) {
e.printStackTrace();
}
}
}
服务端接入
整体说明
1)描述中第三方表示微信、QQ等提供三方登录接入的服务方, 调用方指接入开放平台的业务方
2)由于微信和QQ服务端获取用户信息的时候, 需要指定app、securityKey信息, 所以调用方调用开放平台服务端接口之前需要先通知开放平台在后台配置相应信息。
配置接口人:张香桃 罗童辉
3)开放平台服务端接口判断了第三方调用响应是否成功,然后原样返回第三方响应内容,所以调用方可以通过开放平台的接口响应码判断获取信息是否成功,或者解析开放平台返回的第三方响应内容判断。如果开放平台服务内部涉及多次对第三方调用,则返回的内容为最后一次调用第三方的获取的内容
微信登录接口文档:
接入接口时请认真阅读接口说明
生产URL: https://oauth.51y5.net/open-sso/fa.sec
测试URL: https://wifi30.51y5.net/open-sso/fa.sec
pid: 05000523
HTTP 请求方式:POST
返回格式:JSON
业务请求参数:
参数 | 类型 | 说明 |
---|---|---|
pid | string | 接口代码 |
appId | string | 应用ID |
ed | string | 加密数据 |
st | string | 签名方式:目前只支持MD5, 填写”m”即可 |
et | string | 加密方式a, 表示用AES/CBC/NoPadding加密方式 |
sign | string | 签名 具体可见接口安全页面 |
ed=aes(URLEncoder.encode({"code":"微信code"}, "UTF-8")),然后转换成16进制字符串;
sign=md5(appId+ed+et+pid+st+md5Key)
按照参数 key 的字典排序对应的值组成原串+ md5Key
返回结果:
成功返回示例
{
retCd: "0",
data: {
thirdResp:"" //微信响应内容
}
}
data:需要通过aes解密
错误返回示例:
{
retCd: "H.USER.0079",
retMsg: "获取用户信息失败"
}
QQ登录接口文档
接入接口时请认真阅读接口说明
生产URL: https://oauth.51y5.net/open-sso/fa.sec
测试URL: https://wifi30.51y5.net/open-sso/fa.sec
pid: 05000521
HTTP 请求方式:POST
返回格式:JSON
业务请求参数:
参数 | 类型 | 说明 |
---|---|---|
pid | string | 接口代码 |
appId | string | 应用ID |
ed | string | 加密数据 |
st | string | 签名方式:目前只支持MD5, 填写”m”即可 |
et | string | 加密方式a, 表示用AES/CBC/NoPadding加密方式 |
sign | string | 签名 具体可见接口安全页面 |
ed=aes({"accessToken":"token","openId":"openId"}); sign=md5(appId+ed+et+pid+st+md5Key)
按照参数 key 的字典排序对应的值组成原串+ md5Key
返回结果:
成功返回示例
{
retCd: "0",
data: {
thirdResp:"" //QQ响应内容
}
}
data:需要通过aes解密
错误返回示例:
{
retCd: "H.USER.0079",
retMsg: "获取用户信息失败"
}