OnCompleted
函数id
,name
,email
这是昨天的工作。
代码:
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Log.v("LoginActivity", response.toString());
try {
AccessToken token = AccessToken.getCurrentAccessToken();
String accessToken = token.getToken().toString();
String expiresAt = token.getExpires().toString();
String id = object.getString("id");
String gender = object.getString("gender");
} catch (JSONException e) {
e.printStackTrace();
System.out.println(e.toString());
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id, name, email, gender, location, picture.type(large)");
request.setParameters(parameters);
request.executeAsync();
答案 0 :(得分:4)
在您的https://developers.facebook.com/帐户的应用程序审核部分下,单击开始提交,然后从登录中选择 user_gender 权限,然后执行提交步骤。
facebook批准 user_gender 权限后,您可以使用它。
再次在开发人员帐户中单击设置,然后单击高级,并在升级API版本中 将您的应用程序调用的API版本更改为 v3.1 ,并使用以下代码,您将获得用户的性别。
private void attemptToLogIn() {
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email", "user_gender"));
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
makeGraphRequest(loginResult.getAccessToken());
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
}
});
}
public void makeGraphRequest(AccessToken token) {
GraphRequest request = GraphRequest.newMeRequest(
token, (object, response) -> {
try {
String gender = object.getString("gender");
} catch (JSONException e) {
e.printStackTrace();
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "name,gender");
request.setParameters(parameters);
request.executeAsync();
}
答案 1 :(得分:0)
您的访问令牌需要user_gender权限: https://developers.facebook.com/docs/facebook-login/permissions/v3.0#reference-user_gender