流程照著這位大佬寫的接入的?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的密鑰散列中。
再次運行,成功登陸。