Facebook Android SDK—;否';电子邮件';在梅雷克斯特
我正在使用以下代码获取用户的电子邮件:Facebook Android SDK—;否';电子邮件';在梅雷克斯特,android,facebook,facebook-sdk-4.0,facebook-sdk-4.x,Android,Facebook,Facebook Sdk 4.0,Facebook Sdk 4.x,我正在使用以下代码获取用户的电子邮件: AccessToken accessToken = AccessToken.getCurrentAccessToken(); GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() { @Override public void onCom
AccessToken accessToken = AccessToken.getCurrentAccessToken();
GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject jsonObject, GraphResponse graphResponse) {
// Obtaining
}
}).executeAsync();
通过调试器检查以下内容:
- AccessToken实例包含权限“电子邮件”和“公共配置文件”
- AccessToken实例拒绝的权限集为空
- 结果JSONObject只包含用户id和名称,但不包含电子邮件
如何修复?我认为用户在通过facebook登录时可以指定没有电子邮件权限。因此,即使您期望它,您也可能无法获得电子邮件地址。也许我们面临同样的问题,请尝试以下方法:
Bundle params=new Bundle();
params.putString("fields","id,name,email,verified"); //must specify the "fields" param, otherwise FB always return id and name only.
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"/me",
params,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
//do something...
}
}
).executeAsync();
尝试一下,您需要发送“电子邮件”,作为
GraphRequest
参数的一部分
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email");
request.setParameters(parameters);
request.executeAsync();
您用于测试的配置文件是真实的配置文件吗?它是否与真实的电话号码关联并得到确认?@AlexeyKorolev,我已经用真实(我的)个人资料和测试“机器人”个人资料进行了测试。他们俩都没有电话号码。另外,参见编辑。参见“声明性字段”有什么新闻吗?我也有同样的问题。是的,我知道(并准备好了这个案例),但我已经用我自己的两个配置文件进行了测试,并且从来没有限制这个应用程序的电子邮件访问。另外,请参见编辑。