Facebook用户个人头像+ sdk 4.0

时间:2015-06-06 15:31:41

标签: android facebook android-facebook

有点困惑......

我正在使用LoginButton类在我的应用程序中通过facebook登录。

我已经注册了一个回调loginButton.registerCallback,我可以用它成功登录,这一切都在我的应用程序的LoginActivity类中完成。

如下图所示,在回调的onSuccess方法中,我调用getFaceBookProfileDetails方法,在本地定义调用Graph API来获取用户详细信息,即名称,个人资料图片等,这也很有效。

onSuccess(LoginResult loginResult) {
getFaceBookProfileDetails(loginResult.getAccessToken());
startActivity(intentHomeActivity)
}

现在问题是我想把这个Facebook数据传递给我的HomeActivity,我会在UI上显示它。

由于图形API调用在非UI线程上运行Async,当我尝试在HomeActivity中获取此数据时,我得到Null指针。

为此寻找许多解决方案而没有运气。 任何帮助将不胜感激。

facebookButton = (LoginButton) findViewById(R.id.login_button);
facebookButton.setReadPermissions(Arrays.asList("public_profile",    
"email", "user_birthday"));
intentHomeActivity = new Intent(this, HomeActivity.class);
facebookButton.registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {

getFaceBookProfileDetails(loginResult.getAccessToken());
startActivity(intentHomeActivity);
}


public void onCancel() {

}
@Override
public void onError(FacebookException e) {

}
});


private void getFaceBookProfileDetails(final AccessToken accessToken) {

GraphRequest request = GraphRequest.newMeRequest(
accessToken,
new GraphRequest.GraphJSONObjectCallback() {

@Override
public void onCompleted(
final JSONObject object,
GraphResponse response) {
try {

Toast.makeText(getApplicationContext(), "User Name   
is --"+object.get("name"), Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), "User ID  is 
--"+object.get("id"), Toast.LENGTH_LONG).show();
ProfilePictureView profilePictureView =  new  
ProfilePictureView(getApplicationContext());

intentHomeActivity.putExtra(Constants.FACEBOOK_USER_OBJECT, 
object.get("id").toString());

} catch (JSONException e) {
e.printStackTrace();
}
}
});

request.executeAsync();

1 个答案:

答案 0 :(得分:0)

Response.Redirect方法移动此行:

onSuccess()

startActivity(intentHomeActivity); 方法。后:

onCompleted()

onComplete()方法如下所示:

intentHomeActivity.putExtra(Constants.FACEBOOK_USER_OBJECT, object.get("id").toString());