1

我正在尝试实现 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 应用程序仪表板中。它是 Facebook Android SDK 文档告诉我放置它的两个地方。

我的 app_id 位于我的Android Manifest. 下面是我的 Android 清单,您可以看到找到我的 app_id 的 2 个位置。你可以在代码中找到它@string/app_id

安卓清单

<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”不匹配?

4

2 回答 2

1

您对和使用相同value="@string/app_id"的。com.google.android.gms.games.APP_IDcom.facebook.sdk.ApplicationId

您的 Facebook 应用 ID 不可能与您的 Google 应用 ID 相同。您需要从 Facebook 应用仪表板获取 Facebook 应用 ID。

于 2013-09-11T21:35:10.177 回答
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());
    }
}

使用打印在日志中的哈希码并享受。快乐编码:)

于 2014-08-15T13:02:54.730 回答