Не можете получить экран входа в Facebook?

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

введите описание изображения здесь

Ок, отлично!

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

введите описание изображения здесь

Я просто придумаю это:

введите описание изображения здесь

Код:

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.

введите описание изображения здесь

2 ответа

Меня устраивает. Есть ли сообщение об ошибке в 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

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

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);
    }
Другие вопросы по тегам