【发布时间】:2017-05-16 13:52:14
【问题描述】:
我知道有人问过这个问题,但几乎只有一个答案或什至没有答案。
我不知道是我缺乏理解还是缺乏 Facebook 文档,但到目前为止我有这段代码来检索用户电子邮件。
callbackManager = CallbackManager.Factory.create();
mFbLoginManager.registerCallback(
callbackManager,
new FacebookCallback < LoginResult > () {
@Override
public void onSuccess(final LoginResult loginResult) {
// Handle success
Log.i(TAG, "callBack Login Result: LoginManager success - " + loginResult.toString());
GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject userObject, GraphResponse response) {
if (response.getError() == null) {
try {
AccessToken token = AccessToken.getCurrentAccessToken();
Log.e(TAG, token.getToken());
Log.e(TAG, userObject.toString());
email = userObject.getString("email");
} catch (JSONException ex) {
Log.e(TAG, "Not such permissions for email!");
ex.printStackTrace();
}
Log.d(TAG, "Email fetched: " + email);
}else{
Log.e(TAG, "Something went wrong with fetching email with GraphRequest");
}
}
}).executeAsync();
}
JSON 字符串只返回名称和 ID,因此我的电子邮件变量为空。
让我感到困扰的部分是,当我在 Graph Explorer 或 link 上测试它时,我收到了电子邮件。
我在开发人员网站仪表板和我的代码(当用户按下 facebook 登录按钮时位于 onClick() 内部)也拥有 se 权限:
mFbLoginManager.logInWithReadPermissions(LoginActivity.this, Arrays.asList("user_photos", "email", "public_profile")
所以我不确定我的代码有什么问题。登录按钮是自定义的,而不是 facebook LoginButton,我不知道这是否重要。
欢迎任何帮助
【问题讨论】:
-
Facebook JS SDK's FB.api('/me') method doesn't return the fields i expect in Graph API v2.4+ 的可能重复项 - 您忽略了询问您想要的字段,这是自 API v2.4 起所必需的
标签: java android facebook-graph-api facebook-android-sdk