我的Facebook登录活动是否有帮助:Facebook个人资料的getName()在Android上始终返回null
public class LoginActivity extends AppCompatActivity {
private LoginButton loginButton;
private CallbackManager callbackManager;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_login);
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("public_profile", "user_friends");
final Intent myIntent = new Intent(this, MapsActivity.class);
if (isLoggedIn()) {
startActivity(myIntent);
finish();
return;
}
loginButton.setOnClickListener(new View.OnClickListener() {
public void onClick(final View v) {
// Callback registration
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this, Arrays.asList("public_profile", "user_friends"));
startActivity(myIntent);
finish();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException exception) {
}
});
}
});
}
private boolean isLoggedIn() {
AccessToken accessToken = AccessToken.getCurrentAccessToken();
return accessToken != null;
}
}
和代码我使用试图从他们的ID得到别人的名字:
new Profile(creatorId, null, null, null, null, null).getFirstName()
我已经尝试了此处显示的getFirstName()调用,除了getName()并且两者总是返回null。我认为如果他们在通过Facebook登录时授权我的应用程序,在我所请求的Facebook权限中拥有“public_profile”将允许我以这种方式获取某人的姓名。然而,我并不总是在我所要求的Facebook权限中拥有“public_profile”,但我已经强制所有用户通过Facebook重新登录到我的应用程序中,使用当前的代码和权限,所以我认为这可以解决这个问题。尽管如此,这个函数仍然返回null,我不知道为什么。
另外,creatorId可能是与当前登录的FB用户不同的用户的FB ID。(他们将授权+使用过去的应用程序,而不是该Android设备上当前登录的用户)。