Не можете получить экран входа в 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);
}