Android 登录成功后没有收到facebook的电子邮件,它只是给出了名字 callbackManager=callbackManager.Factory.create(); fbLoginButton.setReadPermissions(“电子邮件”); registerCallback(callbackManager,newfacebookcallback()){ @凌驾 成功时公共无效(LoginResult LoginResult){ GraphRequestStatSyncTask请求=GraphRequest.NewMereRequest(loginResult.getAccessToken(), 新建GraphRequest.GraphJSONObjectCallback(){ @凌驾 未完成公共无效(JSONObject对象,GraphResponse响应){ Toast.makeText(getApplicationContext(),“Data”+object.toString(),Toast.LENGTH_LONG).show(); setText(object.optString(“电子邮件”)); setText(object.optString(“name”)); } }).executeAsync(); } @凌驾 公开作废{ } @凌驾 public void onError(facebook异常错误){ } }); buttonFbSignup.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ fbLoginButton.performClick(); } });
您设置了Android 登录成功后没有收到facebook的电子邮件,它只是给出了名字 callbackManager=callbackManager.Factory.create(); fbLoginButton.setReadPermissions(“电子邮件”); registerCallback(callbackManager,newfacebookcallback()){ @凌驾 成功时公共无效(LoginResult LoginResult){ GraphRequestStatSyncTask请求=GraphRequest.NewMereRequest(loginResult.getAccessToken(), 新建GraphRequest.GraphJSONObjectCallback(){ @凌驾 未完成公共无效(JSONObject对象,GraphResponse响应){ Toast.makeText(getApplicationContext(),“Data”+object.toString(),Toast.LENGTH_LONG).show(); setText(object.optString(“电子邮件”)); setText(object.optString(“name”)); } }).executeAsync(); } @凌驾 公开作废{ } @凌驾 public void onError(facebook异常错误){ } }); buttonFbSignup.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ fbLoginButton.performClick(); } });,android,facebook,facebook-graph-api,facebook-android-sdk,Android,Facebook,Facebook Graph Api,Facebook Android Sdk,您设置了电子邮件权限(希望在登录弹出窗口中得到请求),但没有API调用请求该电子邮件。确保您知道“声明性字段”的含义,这将是获取用户电子邮件的api调用:/me?fields=email 官方文档中有关于如何进行API调用的示例代码,请具体查看字段参数: 例如,这应该返回用户的id、姓名和电子邮件-只要电子邮件在登录过程中获得授权,并且只要电子邮件在Facebook上得到确认: callbackManager = CallbackManager.Factory.create(); fbLog
电子邮件
权限(希望在登录弹出窗口中得到请求),但没有API调用请求该电子邮件。确保您知道“声明性字段”的含义,这将是获取用户电子邮件的api调用:/me?fields=email
官方文档中有关于如何进行API调用的示例代码,请具体查看字段
参数:
例如,这应该返回用户的id、姓名和电子邮件-只要电子邮件在登录过程中获得授权,并且只要电子邮件在Facebook上得到确认:
callbackManager = CallbackManager.Factory.create();
fbLoginButton.setReadPermissions("email");
fbLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequestAsyncTask request = GraphRequest.newMeRequest(loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Toast.makeText(getApplicationContext(), "Data" + object.toString(), Toast.LENGTH_LONG).show();
etEmail.setText(object.optString("email"));
etName.setText(object.optString("name"));
}
}).executeAsync();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
}
});
buttonFbSignup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
fbLoginButton.performClick();
}
});
您还应该阅读整个页面,它解释了字段参数和更多信息:错误是我的电子邮件未在facebook注册
和
如果您在登录过程中确实被要求获得电子邮件权限,但仍然没有电子邮件…请确保您甚至使用电子邮件登录facebook。它实际上不必存在,例如,人们也可以使用电话号码登录。我已经正确集成了facebook sdk,但未成功获取电子邮件您设置了电子邮件权限(希望在登录弹出窗口中获得请求),但没有api调用请求电子邮件。请确保您知道“声明性字段”的含义,这将是获取用户电子邮件的api调用:/me?fields=email请帮助我如何做到这一点?我是新手,我也这么做了,但我只获取id和名称。如果可以,请帮助我。您是否确实在登录对话框中被请求电子邮件权限?是否调试了api调用的响应?你是怎么调试的?您认识到您的代码和我的代码示例在字段参数方面的差异吗?GraphRequest request=GraphRequest.NewMereRequest(loginResult.getAccessToken(),new GraphRequest.GraphJSONObjectCallback(){@Override public void onCompleted(JSONObject对象,GraphResponse响应){//应用程序代码Toast.makeText(getApplicationContext(),“Data”+object.toString(),Toast.LENGTH_LONG).show();字符串uname=object.optString(“名称”);字符串user_email=response.getJSONObject().optString(“电子邮件”);etName.setText(uname);etEmail.setText(user_email);});
GraphRequest request = GraphRequest.newMeRequest(
accessToken,
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
// Application code
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email");
request.setParameters(parameters);
request.executeAsync();