咸鱼

咸鱼是以盐腌渍后,晒干的鱼

0%

集成极光认证服务本机号码一键登录

极光的文档很详细,这里做一下笔记。

一、账号实名认证

需要账号实名认证,否则这个服务用不了,认证通过过,会赠送1000条认证。

二、创建应用

这就不记录了,简单的网页可视化操作流程,要注意的是:

  • Android应用要获取App的MD5签名和packageName 一起填到控制台的应用设置里;
  • iOS只需要填Bundle ID。

三、填公钥到控制台

生成一对RSA密钥对(位数1024位,格式PKCS#8),填 公钥 到控制台(注意要去掉其他符号或者换行符)。
生成秘钥的方法,可以用Java代码、openssl或者在线网页也可以,具体参考【RSA加密解密实践】
比如这个openssl生成的:

1
2
3
4
5
6
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMtvNrm4VDreYXzMRnJ4htiBPn
nw9djDL5aLQUYm3w2TQ0CGD1KMBhsm7hC5sf4RkODQYq6Wp1mkL30GStfbaal1S9
ILnt9w51P0IpOqAFNZ6jwAtrWUhUhrr+33vcJ8gQh4+fJcAEXvrWbNnTCj9zHFDM
elo7bR2PsDLJ6jqqkwIDAQAB
-----END PUBLIC KEY-----

填入控制台内容应该是:

1
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMtvNrm4VDreYXzMRnJ4htiBPnnw9djDL5aLQUYm3w2TQ0CGD1KMBhsm7hC5sf4RkODQYq6Wp1mkL30GStfbaal1S9ILnt9w51P0IpOqAFNZ6jwAtrWUhUhrr+33vcJ8gQh4+fJcAEXvrWbNnTCj9zHFDMelo7bR2PsDLJ6jqqkwIDAQAB

私钥 保存到后台服务器,留后面解密用。

四、移动端集成SDK

按照极光的文档集成。

五、SDK调用流程

步骤如下:

  • 5.1、调用极光 SDK 初始化 API(Android/iOS)。
  • 5.2、初始化完成后,调用 checkVerifyEnable API(Android/iOS) 判断网络环境是否支持。
  • 5.3、在手机网络环境支持的前提下,调用一键登录预取号接口 preLogin(Android/iOS)(可不用预取号)。
  • 5.4、在预取号成功的前提下,请求授权一键登录loginAuth(Android)/getAuthorizationWithControll er(iOS)。
  • 5.5、将请求授权后获取到的 loginToken 上传到后台服务端。
  • 5.6、服务端调用 /v1/web/loginTokenVerify API 获取加密后的手机号码 (注意容易忽视这一步骤)。
  • 5.7、使用私钥对加密后的手机号码进行解密,得到手机号码。
  • 5.8、自己处理手机号码的登录/注册,生成登录信息返回给前端,结束。

重点记录一下获取加密后的手机号码API文档

注意:REST API鉴权是Basic方式,curl中授权信息这样填-> -u '$appKey:$masterSecret', HTTP报文为:> Authorization: Basic ${Base64('$appKey:$masterSecret')},这两个参数在极光的应用设置里面可以找到。

1
2
3
4
5
6
7
8
9
10
11
12
$ curl --insecure -X POST -v https://api.verification.jpush.cn/v1/web/loginTokenVerify 
-H "Content-Type: application/json"
-u "$您的appKey:$你的masterSecret"
-d '{"loginToken":"eltHrl28UBa5PZB****","exID":"1234566"}'

{
"id": 546693586943692800,
"code": 8000,
"content": "get phone success",
"exID": "1234566",
"phone": "E/mSxYMPRPwspn***D6zPiNTJnIcr8Ny32GbFw8zrjK=="
}

响应数据中的 phone 就是加密的电话号码,用私钥对它进行RSA解密就可以得到明文的手机号码,得到手机号码之后的逻辑则由服务器后端控制了,至此结束。