Не можете получить экран входа в Facebook? - PullRequest
0 голосов
/ 19 марта 2012

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

enter image description here

Хорошо, отлично!

Нопосле завершения загрузки вместо любого вида экрана входа в систему, как в примере, приведенном здесь:

enter image description here

Я просто придумаю следующее:

enter image description here

Код:

package com.greatapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.facebook.android.*;
import com.facebook.android.Facebook.*;

public class MyGreatActivity extends Activity {

Facebook facebook = new Facebook("MY_APP_ID");

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    facebook.authorize(this, new DialogListener() {
        @Override
        public void onComplete(Bundle values) {}

        @Override
        public void onFacebookError(FacebookError error) {}

        @Override
        public void onError(DialogError e) {}

        @Override
        public void onCancel() {}
    });
}

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

    facebook.authorizeCallback(requestCode, resultCode, data);
    }
}

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

enter image description here

Ответы [ 2 ]

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

Просто измените ваш код следующим образом:

import com.facebook.android.*;
import com.facebook.android.Facebook.*;

public class MyGreatActivity extends Activity {
public static final String[] PERMISSIONS = new String[] {"email", "publish_checkins", "publish_stream","offline_access"}; 
Facebook facebook = new Facebook("MY_APP_ID");


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    facebook.authorize(this,PERMISSIONS,Facebook.FORCE_DIALOG_AUTH, new DialogListener() {
        @Override
        public void onComplete(Bundle values) {}

        @Override
        public void onFacebookError(FacebookError error) {}

        @Override
        public void onError(DialogError e) {}

        @Override
        public void onCancel() {}
    });
}

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

    facebook.authorizeCallback(requestCode, resultCode, data);
    }
}

Facebook.FORCE_DIALOG_AUTH ---> принудительно войдет в Facebook

также вам необходимо вызвать facebook.logout (context) метод для выхода из текущего метода перед входом в систему с новым пользователем.

Используйте этот метод:

public void Logout() throws MalformedURLException, IOException {
        facebook.logout(mContext);
    }
0 голосов
/ 19 марта 2012

Это работает для меня.Есть ли сообщение об ошибке в logcat?Вы используете интернет-разрешение?Проверьте эти вещи.

или, возможно, вы уже выполнили

или добавьте какой-нибудь журнал в свой код, например:

        facebook.authorize(this, new DialogListener() {
        @Override
        public void onComplete(Bundle values) {
            Log.d("onComplete",""+values);
        }

        @Override
        public void onFacebookError(FacebookError error) {
            Log.d("onFacebookError",""+error);
        }

        @Override
        public void onError(DialogError e) {
            Log.d("onError",""+e);
        }

        @Override
        public void onCancel() {
            Log.d("onCancel","cancel");
        }
    });

и увидите результат в вашем logcat

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