Dav*_*ang 43 android facebook facebook-android-sdk
我正在尝试构建一个使用Facebook SDK for Android 3.0的应用程序.但是当我试着打电话的时候
Session.openActiveSession
Run Code Online (Sandbox Code Playgroud)
它只是简单地给我一个CLOSED_LOGIN_FAILED的SessionState,LogCat是:
12-16 00:03:40.510: W/fb4a:fb:OrcaServiceQueue(4105): com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id
Run Code Online (Sandbox Code Playgroud)
我用"remote_app_id"搜索了StackOverflow,结果是iOS中的"Bundle ID",但我不知道"remote_app_id"在Android中是什么意思.我已经在我的Facebook应用设置中设置了包名和活动名称.我不知道错误的原因.
JPM*_*aes 77
另一个可能的错误(发生在我身上)是:在Facebook App Console上设置"Key Hash",并使用另一个密钥库对Android应用程序进行签名.
不幸的是,这是因为Facebook入门教程引发了这个错误.它说android开发人员应该在你的例子中使用默认的android调试密钥,并没有解释应该使用你将为你的应用程序签名的相同密钥库生成Key Hash.
我的推荐是在你的facebook控制台上设置两个Key Hashes:
keytool -exportcert -alias androiddebugkey -keystore~/.android/debug.keystore | openssl sha1 -binary | openssl base64
keytool -exportcert -alias yourappreleasekeyalias -keystore~/.your/path/release.keystore | openssl sha1 -binary | openssl base64
请记住:您无法发布使用SDK工具生成的调试密钥签名的应用程序.因此,不可能仅使用使用第一个上一个命令行生成的哈希键来发布应用程序(如Facebook教程所示).
有关签署应用程序的更多信息,请访问签署您的应用程序.
Tac*_*ter 61
另一个选择是打印发送到Facebook的密钥哈希并使用该值.
对onCreate()主活动中的方法进行以下更改:
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.loginhowto", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures){
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
Run Code Online (Sandbox Code Playgroud)
替换com.facebook.samples.loginhowto为your own package name.
这对我有用!
Dav*_*ang 34
我解决了这个问题.问题是,我使用"keytool"生成的"Key Hash"是错误的.当"keytool"提示输入密码时,你必须使用"android"(没有引号).我正在使用自己的密码.当我更改密码时,问题就消失了.希望这可以帮助.
小智 5
我被错误的openssl困住,生成错误的哈希键.我使用http://gnuwin32.sourceforge.net/packages/openssl.htm中的openssl 解决了这个问题.
| 归档时间: |
|
| 查看次数: |
30275 次 |
| 最近记录: |