android - 无法在android中的graph api中获取性别
问题描述
- 我无法在这里获得性别
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();
解决方案
在您的https://developers.facebook.com/帐户中,在App Review部分下,单击Start a Submission ,从LOGIN PERMISSIONS中选择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();
}
推荐阅读
- bash - 防止在 echo 参数中扩展 \c
- codeigniter - 如何使用 json 文件使 CodeIgniter 与多语言一起工作
- css - 如何从 React Native 上的图像之间删除边距?
- firebase - Firebase 实时数据库规则使用自定义 ID 的正则表达式
- c++ - 使用模板设置类成员是否为 const
- r - 如何获取数据框中所选列的乘积之和?
- swift - 变量未在视图内更新
- r - 在 R Shiny 中使用带有串扰包的可编辑 DT 表时出错
- java - 如何解决通过字段“schedulerService”表达的不满足的依赖关系?
- python - 为什么我不能在 beautifulsoup 中用 .text 提取文本