注意:个人无法使用此功能,因为个人申请使用是不会通过的
流程介绍
开发文档:https://docs.jiguang.cn/jverification/guideline/intro
创建使用应用流程详情见:
API文档:https://docs.jiguang.cn/jverification/server/rest_api/rest_api_summary
注意:
这里发生HTTP请求调用,需要采用 HTTP 基本认证的验证方式 做法为,HTTP Header 中加 Authorization: Header 名称是 "Authorization", 值是 base64 转换过的 "appKey:masterSecret"(中间有个冒号)。这两者可以在极光开发者服务的 Web 控制台[应用设置]-[应用信息]中查看。
一键登录API和代码示例:
注意请求返回中的电话号码,需要用配置在极光的公钥对应的私钥解密
公钥和私钥配置地:
代码实现
这里使用hutool工具包发送http请求
hutool发送Http请求-HttpRequest
使用 hutool 工具包发送 HTTP 请求
依赖:
<!--Hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.16</version>
</dependency>
yaml配置:
#极光
jiguang:
jpush:
#极光开发APP KEY
app-key: ""
#极光开发MASTER SECRET
master-secret: ""
#极光短信签名ID
message-sign-id: ""
#极光验证码短信ID
captcha-template-id: ""
jverify:
#极光的公钥 (用于一键登录加密手机号码)
public-key: ""
#极光的私钥 (用于一键登录加密手机号码)
private-key: ""
loginToken是前端调用极光API获取得到传递给后端的
代码示例:
/**
* 一键登录,获取登录成功后解密过后的电话号码
*/
private String getPhoneByJVerify(String loginToken) {
JSONObject param = new JSONObject();
param.put("loginToken", loginToken);
String result = HttpRequest.post("https://api.verification.jpush.cn/v1/web/loginTokenVerify")
.basicAuth(JPUSH_APP_KEY, JPUSH_MASTER_SECRET)
.body(param.toString())
.timeout(20000)
.execute().body();
JSONObject jsonObject = JSON.parseObject(result);
//加密后的电话号码(RSA加密)
String phoneToken = jsonObject.getString("phone");
//返回解密后的电话号码(通过私钥解密)
if (phoneToken != null) {
RSA rsa = new RSA(JVERIFY_PRIVATE_KEY, JVERIFY_PUBLIC_KEY);
byte[] decrypt = rsa.decrypt(phoneToken, KeyType.PrivateKey);
return StrUtil.str(decrypt, CharsetUtil.CHARSET_UTF_8);
} else {
return null;
}
}