Facebook Android SDK 4.14.0 获取生日
Facebook Android SDK 4.14.0 get birthday
我目前正在创建一个测试应用程序来测试使用最新的 facebook SDK 更新我们现有的应用程序问题是我需要获取用户生日。我对此感到困惑,因为 SDK3 及更高版本提供的信息比更新的 SDK4 多,而且我不知道如何获得生日,因为到目前为止我看到的所有答案都没有提供我的生日。到目前为止,这是我的代码:
登录按钮回调:
fbLogin = (LoginButton) findViewById(R.id.login_button);
fbLogin.setReadPermissions(Arrays.asList("email", "user_birthday"));
fbLogin.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
try {
if (object.has("id"))
id = object.getString("id");
if (object.has("name"))
userName = object.getString("name");
if (object.has("email"))
userEmail = object.getString("email");
if (object.has("gender"))
gender = object.getString("gender");
if (object.has("birthday"))
birthday = object.getString("birthday");
String profile_URL = "https://graph.facebook.com/" + id+ "/picture?type=large";
LogCat.show(id + "\n" + userName + "\n" + userEmail + "\n" + birthday + "\n" + profile_URL + "\n" + gender);
} catch (Exception e) {
e.printStackTrace();
LogCat.show("Error:" + e.getMessage());
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id, name, email,gender, birthday");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
// App code
Toast.makeText(SplashLogin.this, "CANCEL", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException exception) {
// App code
Toast.makeText(SplashLogin.this, "" + exception.toString(), Toast.LENGTH_SHORT).show();
}
});
JSON 回复 returns 只有我帐户的 ID 和姓名、电子邮件和性别,但不包括生日。我错过了什么吗?
根据facebook最新的sdk,获取生日需要先提交申请审核。在测试应用程序中,您可以获得 public 配置文件,其中包括以下内容
- id
- 封面
- 姓名
- first_name
- last_name
- age_range
- link
- 性别
- 语言环境
- 图片
- 时区
- updated_time
- 已验证
有关详细信息,您可以阅读此 link
中的以下文档
If your app requests this permission Facebook will have to review how
your app uses it. link
Facebook 不给用户生日 default.You 必须使用扩展权限。
我通过 Facebook 开发者控制台在我的应用程序中启用生日权限解决了这个问题。
fbSignUp.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(final LoginResult loginResult) {
// App code
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
try {
Data.fbAccessToken = loginResult.getAccessToken().getToken();
LogCat.show(loginResult.getAccessToken().getToken());
if (object.has("id")) {
id = object.getString("id");
Data.fbId = object.getString("id");
}
if (object.has("name")) {
userName = object.getString("name");
;
Data.fbUserName = object.getString("name");
}
if (object.has("email")) {
userEmail = object.getString("email");
Data.fbUserEmail = object.getString("email");
}
if (object.has("birthday")) {
userBirthDay = object.getString("birthday");
}
else {
if (userEmail == null || "".equalsIgnoreCase(userEmail)) {
if (userName != null && !"".equalsIgnoreCase(userName)) {
userEmail = userName + "@facebook.com";
Data.fbUserEmail = Data.fbUserName + "@facebook.com";
} else {
userEmail = id + "@facebook.com";
Data.fbUserEmail = Data.fbId + "@facebook.com";
}
}
}
} catch (Exception e) {
e.printStackTrace();
LogCat.show("Error:" + e.getMessage());
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id, name, email,birthday,gender");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
// App code
Toast.makeText(RegisterScreen.this, "CANCEL", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException exception) {
// App code
Toast.makeText(RegisterScreen.this, "" + exception.toString(), Toast.LENGTH_SHORT).show();
}
});
我目前正在创建一个测试应用程序来测试使用最新的 facebook SDK 更新我们现有的应用程序问题是我需要获取用户生日。我对此感到困惑,因为 SDK3 及更高版本提供的信息比更新的 SDK4 多,而且我不知道如何获得生日,因为到目前为止我看到的所有答案都没有提供我的生日。到目前为止,这是我的代码:
登录按钮回调:
fbLogin = (LoginButton) findViewById(R.id.login_button);
fbLogin.setReadPermissions(Arrays.asList("email", "user_birthday"));
fbLogin.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
try {
if (object.has("id"))
id = object.getString("id");
if (object.has("name"))
userName = object.getString("name");
if (object.has("email"))
userEmail = object.getString("email");
if (object.has("gender"))
gender = object.getString("gender");
if (object.has("birthday"))
birthday = object.getString("birthday");
String profile_URL = "https://graph.facebook.com/" + id+ "/picture?type=large";
LogCat.show(id + "\n" + userName + "\n" + userEmail + "\n" + birthday + "\n" + profile_URL + "\n" + gender);
} catch (Exception e) {
e.printStackTrace();
LogCat.show("Error:" + e.getMessage());
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id, name, email,gender, birthday");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
// App code
Toast.makeText(SplashLogin.this, "CANCEL", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException exception) {
// App code
Toast.makeText(SplashLogin.this, "" + exception.toString(), Toast.LENGTH_SHORT).show();
}
});
JSON 回复 returns 只有我帐户的 ID 和姓名、电子邮件和性别,但不包括生日。我错过了什么吗?
根据facebook最新的sdk,获取生日需要先提交申请审核。在测试应用程序中,您可以获得 public 配置文件,其中包括以下内容
- id
- 封面
- 姓名
- first_name
- last_name
- age_range
- link
- 性别
- 语言环境
- 图片
- 时区
- updated_time
- 已验证
有关详细信息,您可以阅读此 link
中的以下文档If your app requests this permission Facebook will have to review how your app uses it. link
Facebook 不给用户生日 default.You 必须使用扩展权限。
我通过 Facebook 开发者控制台在我的应用程序中启用生日权限解决了这个问题。
fbSignUp.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(final LoginResult loginResult) {
// App code
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
try {
Data.fbAccessToken = loginResult.getAccessToken().getToken();
LogCat.show(loginResult.getAccessToken().getToken());
if (object.has("id")) {
id = object.getString("id");
Data.fbId = object.getString("id");
}
if (object.has("name")) {
userName = object.getString("name");
;
Data.fbUserName = object.getString("name");
}
if (object.has("email")) {
userEmail = object.getString("email");
Data.fbUserEmail = object.getString("email");
}
if (object.has("birthday")) {
userBirthDay = object.getString("birthday");
}
else {
if (userEmail == null || "".equalsIgnoreCase(userEmail)) {
if (userName != null && !"".equalsIgnoreCase(userName)) {
userEmail = userName + "@facebook.com";
Data.fbUserEmail = Data.fbUserName + "@facebook.com";
} else {
userEmail = id + "@facebook.com";
Data.fbUserEmail = Data.fbId + "@facebook.com";
}
}
}
} catch (Exception e) {
e.printStackTrace();
LogCat.show("Error:" + e.getMessage());
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id, name, email,birthday,gender");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
// App code
Toast.makeText(RegisterScreen.this, "CANCEL", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException exception) {
// App code
Toast.makeText(RegisterScreen.this, "" + exception.toString(), Toast.LENGTH_SHORT).show();
}
});