facebook sdk4 android 获取配置文件

facebook sdk4 android getprofile

我遇到了这个问题:当我尝试执行该方法时 "Profile.getprofile()" 它 returns 即使使用 ProfileTracker 也是空的。

这是我的代码:

 public class Login extends Activity implements OnClickListener,ConnectionCallbacks, OnConnectionFailedListener {




//TODO Facebook
ProfileTracker mProfileTracker;
private CallbackManager callbackManager;
final List<String> permisos = new ArrayList<String>();
private FacebookCallback<LoginResult> fb = new FacebookCallback<LoginResult>() {


    @Override
    public void onSuccess(LoginResult loginResult) {
        // App code
        mProfileTracker = new ProfileTracker() {
            @Override
            protected void onCurrentProfileChanged(Profile profile, Profile profile2) {

            }
        };
        mProfileTracker.startTracking();
        AccessToken token = loginResult.getAccessToken();
        Profile user = Profile.getCurrentProfile();
        String name = user.getName();
        Toast.makeText(Login.this, "Connected "+name , Toast.LENGTH_LONG).show();

    }
    @Override
    public void onCancel() {
        // App code

    }

    @Override
    public void onError(FacebookException exception) {
        // App code

    }
};

我的 onCreate:

@Override
protected void onCreate(Bundle savedInstanceState) {

    FacebookSdk.sdkInitialize(getApplicationContext());
    callbackManager = CallbackManager.Factory.create();
    setContentView(R.layout.init_login);

    imgFacebook = (ImageView) findViewById(R.id.login_img_facebook);
    imgFacebook.setOnClickListener(this);
    permisos.add("user_friends");
    permisos.add("public_profile");
    LoginManager.getInstance().setLoginBehavior(LoginBehavior.SUPPRESS_SSO);
    LoginManager.getInstance().registerCallback(callbackManager, fb);
}

我的点击:

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.login_img_facebook:
        LoginManager.getInstance().logInWithReadPermissions(this,permisos);
        break;
    }
}

我的 onActivityResult:

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

我将此添加到我的清单中:

   <meta-data android:name="com.facebook.sdk.ApplicationId"
          android:value="@string/facebook_app_id"/>
    <activity android:name="com.facebook.FacebookActivity"
             android:label="@string/app_name"
             android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

顺便说一下,我使用的是 eclipse 而不是 Android Studio

代码放置错误

AccessToken token = loginResult.getAccessToken();
Profile user = Profile.getCurrentProfile();
String name = user.getName();
Toast.makeText(Login.this, "Connected "+name , Toast.LENGTH_LONG).show();

以上代码应放在跟踪器的函数中

mProfileTracker = new ProfileTracker() {
    @Override
    protected void onCurrentProfileChanged(Profile profile, Profile profile2) {
        // Place above code here...
    }
};