无法获得Facebook登录屏幕?

时间:2012-03-19 18:22:52

标签: android facebook android-layout facebook-login facebook-android-sdk

我正在关注Facebook Android SDK tutorial,我的应用程序中包含了导致此步骤的所有代码。我启动应用程序(在我的手机上测试它,但在模拟器中测试它)并出现此屏幕:

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 :(得分:0)

它对我有用。 在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中查看结果

答案 1 :(得分:0)

只需像这样修改你的代码:

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);
    }