Facebook Android SDK即使在获得许可后也没有电子邮件
我正在尝试通过Facebook应用程序获取用户电子邮件。但它总是返回空的。我甚至已经给出了所需的权限。应用程序还向用户显示应用程序将收到电子邮件等的消息Facebook Android SDK即使在获得许可后也没有电子邮件,android,facebook,facebook-sdk-4.0,Android,Facebook,Facebook Sdk 4.0,我正在尝试通过Facebook应用程序获取用户电子邮件。但它总是返回空的。我甚至已经给出了所需的权限。应用程序还向用户显示应用程序将收到电子邮件等的消息 public class MainActivity extends AppCompatActivity { private TextView info; private LoginButton loginButton; private CallbackManager callbackManager; @Override protected v
public class MainActivity extends AppCompatActivity {
private TextView info;
private LoginButton loginButton;
private CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (BuildConfig.DEBUG) {
FacebookSdk.setIsDebugEnabled(true);
FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
}
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_main);
info = (TextView)findViewById(R.id.info);
loginButton = (LoginButton)findViewById(R.id.login_button);
loginButton.setReadPermissions(Arrays.asList("email","user_friends"));
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
final AccessToken accessToken= loginResult.getAccessToken();
GraphRequestAsyncTask request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse graphResponse) {
info.setText(
"User ID: "
+ user.optString("email")
+ "\n"
+ user.optString("name")
+ "\n" +
"Auth Token: "
+ accessToken.getToken()
);
}
}).executeAsync();
}
@Override
public void onCancel() {
info.setText("Login attempt canceled.");
}
@Override
public void onError(FacebookException e) {
info.setText("Login attempt failed.");
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
}
public类MainActivity扩展了AppCompatActivity{
私有文本视图信息;
私人登录按钮登录按钮;
私人CallbackManager CallbackManager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
if(BuildConfig.DEBUG){
FacebookSdk.setIsDebugEnabled(true);
FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_令牌);
}
callbackManager=callbackManager.Factory.create();
setContentView(R.layout.activity_main);
info=(TextView)findViewById(R.id.info);
loginButton=(loginButton)findviewbyd(R.id.login_按钮);
setReadPermissions(Arrays.asList(“email”,“user_friends”));
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
final AccessToken AccessToken=loginResult.getAccessToken();
graphrequestAsyncTaskRequest=GraphRequest.newMeRequest(accessToken,newgraphRequest.graphysonbjectCallback(){
@凌驾
未完成公共无效(JSONObject用户,GraphResponse GraphResponse){
info.setText(
“用户ID:”
+user.optString(“电子邮件”)
+“\n”
+user.optString(“名称”)
+“\n”+
“身份验证令牌:”
+accessToken.getToken()
);
}
}).executeAsync();
}
@凌驾
公开作废{
info.setText(“登录尝试已取消”);
}
@凌驾
公共无效onError(FaceBook例外e){
info.setText(“登录尝试失败”);
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
callbackManager.onActivityResult(请求代码、结果代码、数据);
}
}
知道我做错了什么吗?而不是:
executeAsync();
使用:
要请求的bundle参数:
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender,birthday,picture.type(small)");
request.setParameters(parameters);
request.executeAsync();
在代码中:
final AccessToken accessToken= loginResult.getAccessToken();
GraphRequestAsyncTask request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse graphResponse) {
info.setText(
"User ID: "
+ user.optString("email")
+ "\n"
+ user.optString("name")
+ "\n" +
"Auth Token: "
+ accessToken.getToken()
);
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender,birthday,picture.type(small)");
request.setParameters(parameters);
request.executeAsync();
还要确保您的Facebook帐户中的电子邮件是公开的。而不是:
executeAsync();
使用:
要请求的bundle参数:
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender,birthday,picture.type(small)");
request.setParameters(parameters);
request.executeAsync();
在代码中:
final AccessToken accessToken= loginResult.getAccessToken();
GraphRequestAsyncTask request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse graphResponse) {
info.setText(
"User ID: "
+ user.optString("email")
+ "\n"
+ user.optString("name")
+ "\n" +
"Auth Token: "
+ accessToken.getToken()
);
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender,birthday,picture.type(small)");
request.setParameters(parameters);
request.executeAsync();
还要确保电子邮件
在您的Facebook帐户中是公开的。所需权限是指-您的电子邮件权限已在Facebook开发者控制台中获得批准??仅供参考,某些帐户电子邮件中的隐私设置不公开。您是否尝试过使用不同的帐户?您的意思是,您的电子邮件权限已在facebook开发者控制台中获得批准??仅供参考,某些帐户电子邮件中的隐私设置不公开。你试过不同的账户吗