记录cocos creator 安卓原生接入facebook登录SDK

流程照着这位大佬写的接入的 https://blog.csdn.net/lupeng_cs/article/details/106177692

遇到的第一个问题,使用maven集成时,我是直接复制官方文档https://developers.facebook.com/docs/facebook-login/android?locale=zh_CN中的

这点很坑, implementation 'com.facebook.android:facebook-login:[8.1)'应该写成 implementation 'com.facebook.android:facebook-login:[8,9)'

因为这点浪费了我个把小时,先吐槽一波fb。

之后一切准备就绪,开始真机调试,调用登录接口时报错[code] 1349195 [message]: 该密钥散列不匹配任何已存储的密钥散列,根据官方文档说的做

打开cmd,复制上面的代码,将自己的.jks文件拖进去,得到一串密钥散列,填进去,保存。ok,继续调试。

结果还是不行,我就想是不是因为要打签名包出来才可以,于是乎打了个debug包出来,然后噩梦来了。

打包出来调试发现js调用java登录接口是一直报错javascriptjavabridge: classloader failed to find class of org/cocos2dx/javascript/AppActivity,这就很纳闷了,之前真机调试可以找到啊,怎么打包出来就不行了呢。各种百度谷歌,大部分都是这个链接的说法

https://forum.cocos.org/t/creator-release-js-java-java/73081/9

然鹅我打的是debug包啊,并未混淆。于是开始我的漫长踩坑之路。

之前打包时,我的cocos creator构建发布参数是这样的:

我一个个参数对照查看,发现安卓原生应该将"内联所有SpriteFrame"取消勾选,将模板改为default,抱着试一试的心态,重新构建了项目,并将之前接入操作重新做了一遍,该到了jsb-default这个项目里面,再次打包、运行,居然真的就可以正常调用登录接口了,这其中原理希望哪位大佬能解答一下,我自己是没整明白。

然鹅,接口能调用了,但是还是无法正常登录,依然报错[code] 1349195 [message]: 该密钥散列不匹配任何已存储的密钥散列,那这就不是因为签名包的问题了。在网上找到这位大佬写的https://blog.csdn.net/Jason_HD/article/details/103483475

原来密钥散列并非是.jks文件的,而是打出来包以后,cmd运行 keytool -list -printcert -jarfile xxx/xxx/xxx.apk ,将SHA1: 后面的这一串填出入

http://tomeko.net/online_tools/hex_to_base64.php里面的Hex string中

点击Convert,将Output里的散列填入facebook的密钥散列中。

再次运行,成功登陆。

你可能感兴趣的:(记录cocos creator 安卓原生接入facebook登录SDK)