Сбой официальных примеров Facebook (GraphApiSample)

Я начал работать с facebook-android-sdk-3.5.2.

Проект SDK также содержит примеры примеров varius для использования api like:

  • HelloFacebookSample: простая деятельность, в которую вы можете войти и сделать что-то полезное, отлично работает.

Следующее, что я хотел попробовать в следующем примере:

  • GraphApiSample, у которого у меня была проблема с.

После запуска этого приложения я получил эту ошибку: (Logcat):

11-11 15:22:40.008: E/AndroidRuntime(14048): FATAL EXCEPTION: main
11-11 15:22:40.008: E/AndroidRuntime(14048): java.lang.RuntimeException: Unable to resume activity {com.facebook.samples.graphapi/com.facebook.samples.graphapi.GraphApiSampleActivity}: java.lang.IllegalArgumentException: Both context and applicationId must be non-null
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2621)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2649)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2122)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.ActivityThread.access$700(ActivityThread.java:134)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.os.Looper.loop(Looper.java:137)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.ActivityThread.main(ActivityThread.java:4867)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at java.lang.reflect.Method.invokeNative(Native Method)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at java.lang.reflect.Method.invoke(Method.java:511)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at dalvik.system.NativeStart.main(Native Method)
11-11 15:22:40.008: E/AndroidRuntime(14048): Caused by: java.lang.IllegalArgumentException: Both context and applicationId must be non-null
11-11 15:22:40.008: E/AndroidRuntime(14048):    at com.facebook.AppEventsLogger.activateApp(AppEventsLogger.java:308)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at com.facebook.AppEventsLogger.activateApp(AppEventsLogger.java:292)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at com.facebook.samples.graphapi.GraphApiSampleActivity.onResume(GraphApiSampleActivity.java:76)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1199)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.Activity.performResume(Activity.java:5121)
11-11 15:22:40.008: E/AndroidRuntime(14048):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2611)

Ну, я вижу:

Вызвано: java.lang.IllegalArgumentException: И контекст, и applicationId должны быть не пустыми

Хорошо, но я ничего не изменил в коде. Это должна быть работа, не так ли?

Я попытался:

  • Удалить проект и импортировать

  • Удалите проект и добавьте новый проект андроида из существующего кода

  • Очистите мой проект

  • Удалить зависимость библиотеки facebook sdk и reimport, затем снова очистить.

Тот же результат после всех этих.

Пожалуйста, если кто-то знаком с этой проблемой. помогите мне.

E D я T:

По какой-то причине этот официальный образец в facebook не содержит appId. Спасибо за предложение!

Ответы

Ответ 1

Попробуйте установить app_id в strings.xml или добавить его. Это также упоминается в учебнике по началу работы: Документация

Дополнительный шаг: Создайте метаданные с именем com.facebook.sdk.ApplicationId и значением @string/app_id в AndroidManifest.xml

Ответ 2

Если у вас нет (или не требуется) идентификатора приложения facebook, хранящегося в вашем файле strings.xml(например, возможно, вы получаете динамическое приложение-приложение facebook через Интернет), тогда вы можете вызвать этот метод, а не активировать., AppEventsLogger.activateApp(Context context, String facebookAppId)

Вы должны называть это в методе onResume() своих действий:

@Override protected void onResume() { super.onResume(); AppEventsLogger.activateApp(...); }