极光的文档很详细,这里做一下笔记。
一、账号实名认证
需要账号实名认证,否则这个服务用不了,认证通过过,会赠送1000条认证。
二、创建应用
这就不记录了,简单的网页可视化操作流程,要注意的是:
- Android应用要获取App的MD5签名和packageName 一起填到控制台的应用设置里;
- iOS只需要填Bundle ID。
三、填公钥到控制台
生成一对RSA密钥对(位数1024位,格式PKCS#8),填 公钥 到控制台(注意要去掉其他符号或者换行符)。
生成秘钥的方法,可以用Java代码、openssl或者在线网页也可以,具体参考【RSA加密解密实践】。
比如这个openssl生成的:
1 | -----BEGIN 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 | $ curl --insecure -X POST -v https://api.verification.jpush.cn/v1/web/loginTokenVerify |
响应数据中的 phone
就是加密的电话号码,用私钥对它进行RSA解密就可以得到明文的手机号码,得到手机号码之后的逻辑则由服务器后端控制了,至此结束。