Facebook SDK работает только с Активами? - PullRequest
4 голосов
/ 12 января 2012

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

В примерах SDK приведен простой пример, в котором используется Activity, чтобы попытаться авторизовать пользователя с помощью единого входа.На.Я попробовал этот пример сам, и он работает.Я могу войти в систему, мне пришлось авторизовать приложение для использования моих данных Facebook, и я мог видеть запросы, сделанные и полученные в LogCat.

Теперь я попытался добавить тот же код в свойсобственное приложение.Это приложение Fragment на основе пакета совместимости.Есть один центральный FragmentActivity, а остальные мои классы просты Fragments.При добавлении примера кода к одному из этих Fragments приложение Facebook запускается на полсекунды при попытке авторизации, но затем закрывается и ничего не происходит.Я снова вернулся к своему обычному фрагменту.

При проверке LogCat после этого, ничто не говорит о том, что приложение Facebook даже открыло или сделало какие-либо запросы, кроме того, что оно показывает некоторые проверки печати, которые я добавил, и фактговорит, что это начало намерения Facebook:

01-12 13:19:40.874: I/System.out(6087): Calling authorize
01-12 13:19:40.874: I/ActivityManager(1380): Starting activity: Intent { cmp=com.facebook.katana/.ProxyAuth (has extras) } from pid 6087
01-12 13:19:40.874: I/System.out(6087): Called authorize

Кроме этого, ничего не возвращается.Никаких проверок в Facebook, никаких заявлений о том, что мои ключи неверны или что-то в этом роде, просто ничего.Намерение Facebook было объявлено, но оно закрылось почти сразу, и больше ничего не показывает, что оно было даже открыто.

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

Код, который я использовал, размещен ниже.Фрагмент запускается кнопкой, которая вызывает FragmentTransaction.Я делаю что-то здесь в корне неправильно, или Facebook SDK действительно просто не работает с Fragments?Я пытался найти эту проблему, но мне не удалось найти кого-либо еще с такой же ситуацией.


public class FanWallFacebook extends Fragment {

    Facebook facebook = new Facebook("294678133912628");

    public FanWallFacebook() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.filler, container, false);
    }

    @Override
    public void onStart() {
        super.onStart();

        System.out.println("Calling authorize");
        facebook.authorize(getActivity(), new DialogListener() {
            @Override
            public void onComplete(Bundle values) {
                System.out.println("Completed");
            }

            @Override
            public void onFacebookError(FacebookError error) {
                System.out.println("Facebook error: "+error.getMessage());
            }


            @Override
            public void onError(DialogError e) {
                System.out.println("General error: "+e.getMessage());
            }

            @Override
            public void onCancel() {
                System.out.println("Cancelled");
            }
        });

        System.out.println("Called authorize");

    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        facebook.authorizeCallback(requestCode, resultCode, data);
        System.out.println("Authorize callback'd");
    }

}

Редактировать

Только что попробовал использовать FragmentActivity, и вот, это работает.Он успешно входит в систему. Похоже, SDK действительно работает только с классами, которые явно расширяют ...Activity.Может ли кто-нибудь дать мне идею, почему это может иметь место?Я всегда думал, что Fragments где-то вниз по линии, а также Activity.

Ответы [ 2 ]

0 голосов
/ 25 ноября 2012

ну ...

новый Facebook SDK имеет действие, которое реализует FragmentActivity, поэтому проблема решена.

0 голосов
/ 13 января 2012

Я использовал FragmentActivity для взаимодействия с Facebook.Не идеальное решение, но оно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...