【发布时间】:2017-02-06 04:59:34
【问题描述】:
如果有帮助,我的 Facebook 登录活动:
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()
除了 getName() 之外,我还尝试了此处显示的 getFirstName() 调用,它们都始终返回 null。我认为如果在通过 Facebook 登录时授权我的应用程序,我请求的 Facebook 权限中包含“public_profile”将允许我以这种方式获取某人的姓名。但是,我请求的 Facebook 权限中并不总是有“public_profile”,但我已经强制所有用户使用当前代码和权限通过 Facebook 重新登录到我的应用程序,所以我认为这可以解决这个问题。然而,这个函数一直返回 null,我不知道为什么。
此外,creatorId 可能是与当前登录的 FB 用户不同的用户的 FB ID。(他们将在过去授权并使用过该应用程序,而不是当前登录的用户在该 Android 设备上)。
【问题讨论】:
标签: android facebook facebook-graph-api facebook-android-sdk android-facebook