Android上的Facebook SSO问题

时间:2011-10-16 13:33:22

标签: android facebook facebook-graph-api

我正在尝试使用facebook的SSO为Android制作应用程序,所以首先我制作了一个测试应用来测试他们的api。

我一直关注Android启动教程here on the facebook dev site。一切都运作良好。当应用程序启动时,它会让我使用其传统的webview登录登录facebook(因为facebook未安装在模拟器上)。然后我注意到如果你已经安装了facebook,那么它将使用更精美的屏幕登录。

所以我安装了facebook,打开了应用程序,一切顺利。关闭并重新打开应用程序,然后弹出facebook重新授权屏幕,但这次没有任何信息..

enter image description here

哪个是abit奇怪...所以当我点击'Ok'时会出现..

enter image description here

所以,如果我再次点击'确定',它只是在浏览器中打开Facebook。 如果这与我的代码有关?或Facebook上的东西?我在模拟器和真实设备上都有同样的问题。模拟器正在运行与sdk一起提供的facebooks dev app,该设备拥有来自Android市场的最新facebook应用程序。

代码在这里..

public class Home extends Activity {

Facebook facebook = new Facebook("Blanked the ID :)");
String FILENAME = "app_data";
private SharedPreferences mPrefs;

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

    mPrefs = getPreferences(MODE_PRIVATE);
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);
    if (access_token != null) facebook.setAccessToken(access_token);
    if (expires != 0) facebook.setAccessExpires(expires);

    if (!facebook.isSessionValid()) {
        facebook.authorize(this, new DialogListener() {

            @Override
            public void onComplete(Bundle values) {
                // TODO Auto-generated method stub
            }

            @Override
            public void onFacebookError(FacebookError e) {
                // TODO Auto-generated method stub
            }

            @Override
            public void onError(DialogError e) {
                // TODO Auto-generated method stub
            }

            @Override
            public void onCancel() {
                // TODO Auto-generated method stub
            }
        });
    }
}

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

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

提前感谢您的帮助! (:

1 个答案:

答案 0 :(得分:2)

选择应用后,尝试禁用增强版身份验证对话框here

应用设置 - >高级设置 - >增强的身份验证对话框:已禁用

干杯。