2013-09-11 2 views
1

Я пытаюсь внедрить вход в систему Facebook, а затем разрешить пользователю публиковать обновления статуса и делиться информацией с Facebook через приложение. Я (думаю) пользователь не смог войти в Facebook. Ниже процесс пользователь проходит через:Android hash - «remote_app_id не соответствует сохраненному идентификатору»

  • пользователь щелкает Войти кнопку
  • пользователь входит в систему успешно
  • Ниже окна отображается пользователю

status pic

  • Когда пользователь нажмите кнопку Share, появится следующее сообщение об ошибке: (#404) remote_app_id does not match stored id

Я получил Хэши ключей для своего отладочного хранилища ключей и отпустил хранилище ключей, используя приведенные ниже 2 командные строки.

Debug Keystore

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 

релиз Keystore

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. Его 2 места, которые Google Android SDK docs скажут мне, чтобы поместить его.

У меня есть приложение app_id, которое находится в панели приложений Facebook в моем Android Manifest. Ниже представлен мой манифест Android, и вы можете увидеть 2 места, где найден мой app_id. Вы можете найти его в коде как @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» не соответствует моему «сохраненному идентификатору»?

+1

Я застрял на той же проблеме ... Пожалуйста, дайте мне знать, если вы ее разрешите! :) – Angudroid

+0

@AdrienCerdan, я никогда не исправлял это. Я просто должен был сдаться и взять его на время. – Matt

+0

Я исправил его! В режиме релиза ваш -alias не путь, а «Имя ключа», которое вы видите при экспорте подписанного приложения с eclipse, это имя вашего псевдонима !! – Angudroid

ответ

1

Вы используете тот же value="@string/app_id" как для com.google.android.gms.games.APP_ID, так и для com.facebook.sdk.ApplicationId.

Ваш идентификатор приложения Facebook не может совпадать с вашим идентификатором приложения Google. Вам нужно получить идентификатор приложения Facebook из панели приложений Facebook.

+0

Такое же сообщение об ошибке появляется после того, как я исправился о 2 app_id, которые вы указали. И спасибо за исправление! Я уверен, что исправил будущую ошибку, которая у меня была бы. – Matt

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()); 
    } 
} 

Используйте хеш-код, который печатается в журналах и пользуется. Happy Coding :)

Смежные вопросы