从eclipse在设备上运行App时,Facebook集成运行正常,App在此处使用调试密钥进行签名。
但是我现在已经发布了应用程序并收到错误:
"Invalid android-Key parameter. The key ******* does not match and allowed key.
我已将新发布密钥添加到Facebook上的应用设置,并添加了Facebook错误上显示的密钥,如here所述。
这非常令人沮丧,我在使用调试密钥开发应用程序时遇到了这个问题,我将FB错误生成的密钥添加到FB中的应用程序设置并且它有效,但是现在这不起作用:)
PS我知道我有正确的发布密钥,因为我已将其导入谷歌地图应用程序设置并且地图工作正常!
Manifast:
<!-- meta data fro FB API -->
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
<activity android:name="com.facebook.LoginActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
/>
我关注FB开发者说明here。
我在这里获得了发布密钥:
keytool -list -alias DistributionKeyStoreAlias -keystore "/Users/callanmooneys/Desktop/Android Devolpment/Distributionkeystore" -storepass password -keypass password
任何输入都非常感激,(注意:FB在我开发这个应用程序的过程中一直是痛苦的!)
答案 0 :(得分:-1)
看来你必须将facebook发生的错误中的密钥添加到你的facebook应用程序设置中。
必须编写来自Facebook活动的电子邮件意图,以捕获以编程方式发送到Facebook的密钥。
一旦我将Facebook错误通过电子邮件发送给自己,我可以正确地从错误中复制密钥并添加到Facebook应用程序上的设置,而不是尝试手动输入它在Android设备上生成错误。
无法从logcat获取此密钥,因为从eclipse运行时使用的是调试密钥库密钥而不是释放密钥。
有没有办法调试已发布的应用程序?
无论如何痛苦,这似乎是一个普遍的问题。
为什么facebook文档没有提到这个?
会节省很多时间。
在onCreate()
Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
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) {
....