登录成功后没有收到来自 facebook 的电子邮件,它只提供姓名
Not getting email from facebook after logging success, it is giving name only
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();
}
});
您设置了 email
权限(希望在登录弹出窗口中被要求提供),但是没有 API 请求电子邮件的电话。确保您知道 "declarative fields" 的含义,这将是获取用户电子邮件的 api 调用:/me?fields=email
在官方文档中有关于如何调用API的示例代码,具体查看fields
参数:https://developers.facebook.com/docs/android/graph
例如,这应该return用户的id,姓名和电子邮件-只要在登录过程中获得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();
您还应该阅读整个页面,它解释了字段参数以及更多内容:https://developers.facebook.com/docs/graph-api/using-graph-api/
错误是我的邮箱没有在 facebook 上注册
和
如果您真的在登录过程中被要求提供电子邮件权限,但仍然没有电子邮件……请确保您甚至使用电子邮件登录 facebook。它不一定非得在那里,例如,人们也可以使用 phone 号码登录。
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();
}
});
您设置了 email
权限(希望在登录弹出窗口中被要求提供),但是没有 API 请求电子邮件的电话。确保您知道 "declarative fields" 的含义,这将是获取用户电子邮件的 api 调用:/me?fields=email
在官方文档中有关于如何调用API的示例代码,具体查看fields
参数:https://developers.facebook.com/docs/android/graph
例如,这应该return用户的id,姓名和电子邮件-只要在登录过程中获得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();
您还应该阅读整个页面,它解释了字段参数以及更多内容:https://developers.facebook.com/docs/graph-api/using-graph-api/
错误是我的邮箱没有在 facebook 上注册
和
如果您真的在登录过程中被要求提供电子邮件权限,但仍然没有电子邮件……请确保您甚至使用电子邮件登录 facebook。它不一定非得在那里,例如,人们也可以使用 phone 号码登录。