貌似好久没写文章了,今天来记录下最近用支付宝SDK获取芝麻信用分数的过程,以及踩过的坑。
个人感觉接芝麻信用分数时还是很简单的,基本都是服务端的任务,我们这边只需要将从支付宝授权获取的auth_code传给服务端,剩下的就是服务器的事了。但是还是有些小坑需要记录。
如果以后需要做支付宝登陆的,可以看这里,还是很详细的
Android 集成支付宝第三方登录
其实看官方的Demo也是很好的
踩坑一
当我把官方Demo下下来,配好APPID,PID,RSA2_PRIVATE之后,直接运行Demo直接蹦了,我就懵了,官方Demo居然会有问题,好吧,通过调试,定位是空指针
String oriSign = SignUtils.sign(authInfo.toString(), rsaKey, rsa2);
这里返回了null,无语了,通过网上查找问题,需要对其中封装好的方法修改
public static String sign(String content, String privateKey, boolean rsa2) {
try {
PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(
Base64.decode(privateKey));
//后面需要下个"BC"参数
KeyFactory keyf = KeyFactory.getInstance(ALGORITHM, "BC");
PrivateKey priKey = keyf.generatePrivate(priPKCS8);
java.security.Signature signature = java.security.Signature
.getInstance(getAlgorithms(rsa2));
signature.initSign(priKey);
signature.update(content.getBytes(DEFAULT_CHARSET));
byte[] signed = signature.sign();
return Base64.encode(signed);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
修改之后就不会返回null。
然后就可以通过将签名之后的参数传给AuthTask的authV2授权,授权成功之后就可以获取auth_code,然后传给服务器。
踩坑二