Новый Facebook API 3.0. и совместимость с ActionBarSherlock

Я читаю документы Facebook API Android 3.0, и я не понимаю, какое отношение сеанс имеет к фоновым действиям. Во всех примерах ям должен продлитьFacebookFragment», Ну, было бы неплохо, если бы все мое приложение не расширялось "SherlockFragment» поэтому я не вижу расширения FacebookFragment в качестве опции.

Если я использую код из SessionLoginExample и помещаю свой AppID в Strings в ту же строку, что и в facebook, я получаю:

ErrorI»

10-22 17:04:26.464: E/AndroidRuntime(5491): FATAL EXCEPTION: main
10-22 17:04:26.464: E/AndroidRuntime(5491): java.lang.RuntimeException: Unable to start activity ComponentInfo{nl.specsavers.moodspecs/nl.specsavers.moodspecs.LauncherActivity}: java.lang.NullPointerException: Argument applicationId cannot be null

Я пытаюсь настроить начальную проверку, установлено ли приложение или нет, и существует ли сеанс или нет.

 Settings.addLoggingBehavior(LoggingBehaviors.INCLUDE_ACCESS_TOKENS);

    Session session = Session.getActiveSession();
    if (session == null) {
        if (savedInstanceState != null) {
            session = Session.restoreSession(this, null, statusCallback, savedInstanceState);
        }
        if (session == null) {
            session = new Session(this);
        }
        Session.setActiveSession(session);
        if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
            session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
        }

    } 

Я должен быть в состоянии как-то поместить свой идентификатор приложения где-нибудь, чтобы это действительно нормально, но я могуне могу найти где это поставить.

Мне нужно знать, могу ли я избежать расширения FacebookFragment при использовании SherlockFragment.

Tnx.

Ответы на вопрос(2)

ьзования приложениями.

Образцы в основном используют FacebookActivity, и да, вы делаетене необходимо продлить FacebookActivity. Как вы упомянули, SessionLoginSample демонстрирует это, и если вы не используете FacebookActivity, вы должны обработать сериализацию Session и переопределить / переслать onActivityResult, как показано там.

Тем не менее, похоже, что основная проблема, которую вы затрагиваете, связана с настройкой applicationId. Вы можете установить applicationId в коде или в метаданных.

В коде:

Чтобы установить его в коде, определите строковую константу MY_APP_ID, которая содержит идентификатор вашего приложения, и замените строку:

session = new Session(this);

с:

session = new Session.Builder(this).setApplicationId(MY_APP_ID).build();
В метаданных:

Чтобы установить его в метаданных, добавьте следующее в файл AndroidManifest.xml внутри тега приложения, но вне тегов активности:

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id">
</meta-data>

Затем в values / strings.xml добавьте значение для app_id с идентификатором вашего приложения:

<string name="app_id">1234567890</string>
 igordc02 авг. 2013 г., 13:57
Обязательно использовать ресурс @ string / app_id или он выигралт работа.
 Balkyto23 окт. 2012 г., 09:42
ОК, я должен был использовать метаданные, так как яЯ использую информацию о сеансе в моей активности запуска. Так что проблема была <мета-данные> был снаружиприложение> тег. Tnx для этого объяснения, это очень помогло понять, как установить сессию. Теперь я должен выяснить, как избежать FB App при установке :)
 Buda Florin27 февр. 2013 г., 17:28
Вы, сэр, заслуживаете пива!
 Anukool25 мар. 2013 г., 07:39
Отлично .. помог мне .. спас мой день ..
 Balkyto23 окт. 2012 г., 16:14
Есть ли необходимость сохранять информацию о сеансе в некоторых глобалах? Что я делаю, я проверяю в процессе запуска, есть ли приложение установлено или нет, и если сеанс создан или нет. Затем у меня есть приложение с вкладками. На первой вкладке яЯ не могу выполнить действие, если нет сеанса FB и нет приложения FB. В этом случае на вкладке 5 (настройки) вы должны войти в систему, используя диалог входа в систему, но только в том случае, если приложение FB недоступно. Затем я предполагаю, что должен создать новый сеанс с использованием указанных учетных данных или около того, и сохранить их где-нибудь. (или нет)

если вы неЧтобы предоставить app_id через код, вы должны указать его в метаданных вашего приложения (и в вашем strings.xml). Увидетьhttps://developers.facebook.com/docs/reference/android/3.0/Session#APPLICATION_ID_PROPERTY

В вашем AndroidManifest.xml вам нужно добавить:

<application android:label="@string/app_name" ...="">
  ... other activity stuff here ...
  <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id">
</meta-data></application>

А затем добавьте app_id в виде строки в ваш string.xml.

Ваш ответ на вопрос