Android Facebook SDK AccessToken 问题
Android Facebook SDK AcccessToken problems
我尝试通过 AccessToken
获取用户 email
,我从 Facebook SDK
获取
如果我使用Graph API Explorer
的AccessToken
我可以得到id
、name
和email
没关系我使用浏览器或 OkHttp
:
"https://graph.facebook.com/" + user_id + "?fields=email,name&access_token=" + access_token_from_graph_explorer
我得到这样的回应:
{
"email": "mail@com",
"name": "John Doe",
"id": "4545"
}
如果我使用 AccessToken.getCurrentAccessToken().getToken()
方法获取的 token
,我不会在 JSONObject
中得到 email
。
- 使用
Graph Explorer
我可以看到我的 id
。我试图以这种方式提出请求:
"https://graph.facebook.com/me?fields=email,name&access_token="
还有这个:
"https://graph.facebook.com/" + id + "?fields=email,name&access_token="
在第二种变体中,我 "Unsupported get request. Object with ID 'xxxxxxxxxxx' does not exist, cannot be loaded due to missing permissions...
,同时使用我的 id
。当我尝试使用另一个 user
的 id
时,我仍然没有得到 email
.
Bundle bundle = new Bundle();
bundle.putString("fields", "email,name");
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"me",
bundle,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
System.out.println("data = " + response.toString());
}
}
).executeAsync();
使用这个变体我也没有达到 email
。
我很困惑。告诉我,如何检索用户电子邮件。
3.After登录我试试:
public void onSuccess(LoginResult loginResult) {
System.out.println("succses =" + loginResult.getAccessToken().getToken());
accessToken = loginResult.getAccessToken();
GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse graphResponse) {
Log.d("TAG", user.optString("email"));
Log.d("TAG", user.optString("name"));
Log.d("TAG", user.optString("id"));
init();
}
}).executeAsync();
}
但我没有看到 TAG
有电子邮件
P.S。 graph explorer
中的所有权限均已开启。
投票最高的答案对我不起作用,电子邮件总是空的。我在
上找到了答案
LoginManager.getInstance().registerCallback(mCallbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object,GraphResponse response) {
JSONObject json = response.getJSONObject();
try {
if(json != null){
String text = json.getString("email");
Log.d("email",text);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link,email,picture");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
我尝试通过 AccessToken
获取用户 email
,我从 Facebook SDK
如果我使用
Graph API Explorer
的AccessToken
我可以得到id
、name
和email
没关系我使用浏览器或OkHttp
:"https://graph.facebook.com/" + user_id + "?fields=email,name&access_token=" + access_token_from_graph_explorer
我得到这样的回应:
{
"email": "mail@com",
"name": "John Doe",
"id": "4545"
}
如果我使用 AccessToken.getCurrentAccessToken().getToken()
方法获取的 token
,我不会在 JSONObject
中得到 email
。
- 使用
Graph Explorer
我可以看到我的id
。我试图以这种方式提出请求:
"https://graph.facebook.com/me?fields=email,name&access_token="
还有这个:
"https://graph.facebook.com/" + id + "?fields=email,name&access_token="
在第二种变体中,我 "Unsupported get request. Object with ID 'xxxxxxxxxxx' does not exist, cannot be loaded due to missing permissions...
,同时使用我的 id
。当我尝试使用另一个 user
的 id
时,我仍然没有得到 email
.
Bundle bundle = new Bundle();
bundle.putString("fields", "email,name");
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"me",
bundle,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
System.out.println("data = " + response.toString());
}
}
).executeAsync();
使用这个变体我也没有达到 email
。
我很困惑。告诉我,如何检索用户电子邮件。
3.After登录我试试:
public void onSuccess(LoginResult loginResult) {
System.out.println("succses =" + loginResult.getAccessToken().getToken());
accessToken = loginResult.getAccessToken();
GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse graphResponse) {
Log.d("TAG", user.optString("email"));
Log.d("TAG", user.optString("name"));
Log.d("TAG", user.optString("id"));
init();
}
}).executeAsync();
}
但我没有看到 TAG
有电子邮件
P.S。 graph explorer
中的所有权限均已开启。
投票最高的答案对我不起作用,电子邮件总是空的。我在
LoginManager.getInstance().registerCallback(mCallbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object,GraphResponse response) {
JSONObject json = response.getJSONObject();
try {
if(json != null){
String text = json.getString("email");
Log.d("email",text);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link,email,picture");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});