我正在使用Facebook Sdk登录我的应用程序。成功登录后,我必须为该特定用户调用graph api以获取该用户的电子邮件地址。有没有办法获得电子邮件地址和他的显示名称成功登录响应。
这是我成功登录后调用图谱API的代码。
GraphRequest.newMeRequest(result.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response)
{
if (response.getError() != null)
{
// handle error
}
else
{
String email = object.optString("email");
String id = object.optString("id");
facebookID = id;
Log.i("Log","email : " + email);
Log.i("Log","id : " + id);
}
}
}).executeAsync();
答案 0 :(得分:1)
您可以在此链接中找到要使用的不同参数Facebook Graph-api。 试试这段代码
private FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
Log.v("LoginActivity", response.getRawResponse());
Log.v("AccessToken", AccessToken.getCurrentAccessToken().getToken());
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,first_name,last_name,email,gender,birthday");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException e) {
}
};
请不要忘记覆盖onActivityResult,例如
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
答案 1 :(得分:0)
登录Facebook后尝试此操作:
Profile profile = Profile.getCurrentProfile;
String name = profile.getName();