[英]Facebook login get user birthday and email android
I am trying to get the user email and birthday when user uses facebook login for my app. 当用户使用我的应用程序的Facebook登录名时,我正在尝试获取用户的电子邮件和生日。
This is how I am trying to do it: 这就是我试图做到的:
public class MainActivity extends AppCompatActivity {
private LoginButton facebookLoginButton;
private CallbackManager callbackManager;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(getApplication());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_main);
facebookLoginButton = (LoginButton)findViewById(R.id.fb_login_button);
facebookLoginButton.setReadPermissions(Arrays.asList("email","public_profile", "user_birthday"));
facebookLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest.newMeRequest(
loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject me, GraphResponse response) {
if (response.getError() != null) {
// handle error
} else {
String email = me.optString("email");
String name = me.optString("name");
String birthday = me.optString("user_birthday");
System.out.println(email);
System.out.println(name);
System.out.println(birthday);
}
}
}).executeAsync();
String userID = loginResult.getAccessToken().getUserId();
String AuthToken = loginResult.getAccessToken().getToken();
System.out.println(userID);
System.out.println(AuthToken);
}
Only name, userID and AuthToken is printed successfully, I am not getting values for birthday and email (I use email for my facebook account and provided birthday so there should be value). 仅成功打印名称,用户ID和AuthToken,我没有获得生日和电子邮件的值(我将电子邮件用于我的Facebook帐户并提供了生日,因此应该有值)。
Am i using the permission wrong? 我使用的权限是否错误?
Replace your GraphRequest code with This 将此替换为GraphRequest代码
GraphRequest mGraphRequest = GraphRequest.newMeRequest(
loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject me, GraphResponse response) {
if (response.getError() != null) {
// handle error
} else {
String email = me.optString("email");
String name = me.optString("name");
String birthday = me.optString("user_birthday");
System.out.println(email);
System.out.println(name);
System.out.println(birthday);
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender, birthday");
mGraphRequest.setParameters(parameters);
mGraphRequest.executeAsync();
String userID = loginResult.getAccessToken().getUserId();
String AuthToken = loginResult.getAccessToken().getToken();
System.out.println(userID);
System.out.println(AuthToken);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.