虽然按照官方文档 Facebook 登录 一步一步集成,但测试的时候还是遇到了问题,在这里记录一下。希望给其他出现相同问题的朋友一些借鉴。
问题1
提示没有权限,该账号不是测试账号
解决
在你申请的应用主页,添加测试账号,然后重新编辑密码即可,如图:
问题2
Feature unavailable: Facebook Login is currently unavailable for this app, since we are updating additional details for this app.Please try again later.(Facebook 登录目前无法用于此应用程序,因为我们正在更新此应用程序的其他详细信息)
解决
检查下你请求的权限,这是我的:
LoginManager.getInstance().logInWithReadPermissions(activity, arrayListOf("public_profile"))
在你申请的应用主页,获取对应功能的最高权限,如图:
问题3
Facebook登录报错:将你登入到此应用程序时出错,请稍后再试。
解决
这个问题网上的回答很多,这里提供下我的解决步骤:
1.通过网上的回答,基本定位是秘钥的原因
2.检查填入秘钥的地方,如图:
我使用的以下命令生成秘钥:
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\USERNAME\.android\debug.keystore" | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" sha1 -binary | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" base64
我觉得应该是这里的问题,我测试用的是debug包,所以决定检查下包的签名,结果如图:
网上有的说是:
由于该 jar 是使用目前已禁用的弱算法签名的, 因此该 jar 将被视为未签名。
反正就是签名文件有问题,所以决定换个签名文件,签名文件可以自己生成(不知道自己百度)。
然后使用该签名文件打包debug包,然后重新检查签名文件
keytool -printcert -jarfile F:\MyDemo\Login\LoginDemo\app\debug\app-debug.apk
结果能够得到sha1,说明签名没有问题,接着重新生成秘钥:
keytool -exportcert -alias 123456 -keystore F:\MyDemo\Login\LoginDemo\appkey.jks | openssl sha1 -binary | openssl base64
将获得的秘钥重新填入Facebook配置,测试登录成功