Facebook的Android SDK没有电子邮件,甚至经过许可
问题描述:
我想通过Facebook应用程序获取用户电子邮件。但它总是返回空。我甚至给出了所需的权限。应用程序还会显示应用程序将向用户发送电子邮件等的消息。Facebook的Android SDK没有电子邮件,甚至经过许可
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);
}
} 任何想法我在这里做错了吗?
答
相反的:
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();
同时确保Email
是:
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender,birthday,picture.type(small)");
request.setParameters(parameters);
request.executeAsync();
在你的代码
公开在您的Facebook帐户。
+0
它的工作。谢谢:) – Aneef
+0
很高兴帮助.... – rafsanahmad007
通过权限需要你的意思,你的电子邮件许可已批准在Facebook开发者控制台?由于某些帐户电子邮件中的隐私设置而造成的FYI不公开。你有没有尝试过不同的帐户 –