我正在尝试实施Facebook登录,然后允许用户通过应用发布状态更新并向Facebook分享详细信息。我(想)用户无法成功登录Facebook。以下是用户经历的过程:
Share
按钮时,会显示以下错误消息:(#404) remote_app_id does not match stored id
我已经使用以下2个命令行获得了调试密钥库和释放密钥库的密钥哈希值。
调试密钥库
keytool -exportcert -alias androiddebugkey -keystore C:\Users\lyonsmg\.android\debug.keystore | C:\OpenSSL-Win64\bin\openssl.exe sha1 -binary | C:\OpenSSL-Win64\bin\openssl.exe base64
发布密钥库
keytool -exportcert -alias C:\Users\lyonsmg\matt\_keystores_and_passwords\BibleTriviaLite_keystore -keystore C:\Users\lyonsmg\matt\_keystores_and_passwords\BibleTriviaLite_keystore | C:\OpenSSL-Win64\bin\openssl.exe sha1 -binary | C:\OpenSSL-Win64\bin\openssl.exe
我使用android
作为调试密钥库的密码,使用我的私有密码作为发布密钥库。我在Facebook的开发者设置和Facebook App Dashboard中放置了两个产生的关键哈希值。它是Facebook Android SDK文档告诉我的两个地方。
我的app_id位于Android Manifest
的Facebook App Dashboard中。下面是我的Android Manifest,您可以看到我的app_id找到的2个点。您可以在代码中找到@string/app_id
。
Android Manifest
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="matt.lyons.bibletrivia.lite"
android:versionCode="13"
android:versionName="2.1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:icon="@drawable/icon_blue_bg"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id" />
<activity
android:name=".SplashScreen"
android:screenOrientation="portrait" >
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
<activity
android:label="@string/app_name"
android:name=".About"
android:screenOrientation="portrait" />
<activity
android:label="@string/app_name"
android:name=".Categories"
android:screenOrientation="portrait" />
<activity
android:label="@string/app_name"
android:name=".Question"
android:screenOrientation="portrait" />
<activity
android:label="@string/app_name"
android:name=".Quiz"
android:screenOrientation="portrait" />
<activity
android:label="@string/app_name"
android:name=".QuestionView"
android:screenOrientation="portrait" />
<activity
android:label="@string/app_name"
android:name=".Results"
android:screenOrientation="portrait" />
<activity
android:label="@string/app_name"
android:name=".Highscores"
android:screenOrientation="portrait" />
<activity
android:label="@string/app_name"
android:name=".DatabaseHelper"
android:screenOrientation="portrait" />
<activity
android:label="@string/app_name"
android:name=".ComingSoon"
android:screenOrientation="portrait" />
<activity
android:label="@string/app_name"
android:name=".MainMenu"
android:screenOrientation="portrait" />
<activity
android:label="@string/app_name"
android:name=".MyApplication"
android:screenOrientation="portrait" />
<activity
android:label="@string/app_name"
android:name=".Levels"
android:screenOrientation="portrait" />
<activity
android:label="@string/app_name"
android:name=".GameType"
android:screenOrientation="portrait" />
<meta-data android:value="@string/app_id" android:name="com.facebook.sdk.ApplicationId"/>
<activity android:label="@string/app_name" android:name="com.facebook.LoginActivity"></activity>
</application>
<uses-permission
android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="com.android.vending.BILLING" />
</manifest>
抱歉,我写了这么多,但我只是想覆盖我的所有基础并彻底!我的问题是,我做错了什么?为什么告诉我我的“remote_app_id”与我的“存储ID”不匹配?
答案 0 :(得分:1)
您对value="@string/app_id"
和com.google.android.gms.games.APP_ID
使用相同的com.facebook.sdk.ApplicationId
。
您的Facebook应用ID不可能与您的Google应用ID相同。您需要从Facebook App Dashboard获取Facebook应用程序ID。
答案 1 :(得分:0)
我遇到了同样的问题,我通过openssl生成的哈希码是错误的,然后我使用了这个功能,它有所帮助。希望它也能帮助你。
private void printKeyHash() {
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo("YOUR PACKAGE NAME", 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) {
Log.e("KeyHash:", e.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("KeyHash:", e.toString());
}
}
使用日志中打印的哈希码并享受。快乐编码:)