【发布时间】:2014-02-17 09:03:52
【问题描述】:
我已经检查并仔细检查了有关该问题的在线资源 - 但我仍然无法从 Facebook 响应中获取电子邮件属性。
如入门中所述,我在 LoginButton 上实现了读取权限(“basic_auth”、“email”、“user_birthday”)。创建会话时也设置相同的权限(Session.createFromExistingAccessToken)。但是,在回调函数上,当 Logging GraphUser 和 Response 对象时,我仍然无法检索到用户的电子邮件。
错误仍然存在的可能原因是什么?我错过了一些步骤吗?
**onCreate()**
((LoginButton) findViewById(R.id.dialog_generic_footer_button_fblogin))
.setPublishPermissions(FBSessionV2.getPermissions());
Facebook 会话类
...
public static ArrayList<String> getPermissions(){
if (PERMISSIONS.isEmpty()){
PERMISSIONS.add("basic_info");
PERMISSIONS.add("email");
PERMISSIONS.add("publish_actions");
PERMISSIONS.add("user_birthday");
}
return PERMISSIONS;
}
...
WebDialog.onCompleteListener
session = Session.getActiveSession();
if (!session.isOpened() && !session.isClosed()){
Logger.log(Thread.currentThread().getStackTrace(), "calling accesstoken" + values, Log.DEBUG);
AccessToken at = AccessToken.createFromExistingAccessToken(values.getString("access_token"), null, null, AccessTokenSource.WEB_VIEW, FBSessionV2.getPermissions());
session = Session.openActiveSessionWithAccessToken(ControllerBase.getInstance().getActivity(), at, cb);
} else {
Logger.log(Thread.currentThread().getStackTrace(), "calling openactivesession", Log.DEBUG);
Session.openActiveSession(ControllerBase.getInstance().getActivity(), true, cb);
}
GraphUserCallback()
...
userProfile.put("facebookId", user.getId());
userProfile.put("email", user.getProperty("email"));
userProfile.put("first_name", user.getFirstName());
userProfile.put("last_name", user.getLastName());
userProfile.put("name", user.getName());
userProfile.put("gender", user.getProperty("gender"));
userProfile.put("birthday", user.getBirthday());
if (user.getProperty("email") != null){
userProfile.put("email", (String) user.getProperty("email"));
}
...
更新
我们似乎只是在尝试登录不是 Facebook 应用程序开发人员(也可能是管理员)的 Facebook 帐户时遇到问题。我们刚刚尝试登录一个具有开发者角色的 FB 帐户 - 并且成功了。
但是,由于该应用程序将供公众使用,因此这仍然不能解决我们的问题(现在还不如将其视为创可贴修复 - 我仍需要进一步调查该问题)。
【问题讨论】:
-
试试下面的解决方案,让我知道它是否有效......