我在原生Android中使用facebook sdk 3.5。这就是我获取我的facebook朋友的id /名字的方式:
private void onSessionStateChange(final Session session,
SessionState state, Exception exception) {
System.out.println("onSessionStateChanged");
if (session != null && session.isOpened()) {
if (state.equals(SessionState.OPENED_TOKEN_UPDATED)) {
tokenUpdated();
} else {
getUserRequest(session);
getFriendsRequest(session);
}
} else {
profilePictureView.setProfileId(null);
userNameView.setText("");
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(getActivity(), requestCode,
resultCode, data);
// uiHelper.onActivityResult(requestCode, resultCode, data,
// nativeDialogCallback);
}
private void getFriendsRequest(Session session) {
session.requestNewReadPermissions(new NewPermissionsRequest(
getActivity(), PERMISSIONS));
final ProgressDialog dialog = new ProgressDialog(getActivity());
// get friends details
Request request = Request.newMyFriendsRequest(session,
new Request.GraphUserListCallback() {
@Override
public void onCompleted(List<GraphUser> users,
Response response) {
// if no errors
if (response.getError() == null) {
if (users != null) {
for (GraphUser user : users) {
FacebookFriend fb = new FacebookFriend(user
.getId(), user.getName(), "", "",
"", 0);
friends.add(fb);
}
....
}
}
响应现在是:
{Response: responseCode: 200, graphObject: GraphObject{graphObjectClass=GraphObject, state={"data":[{"id":"213","name":"Test name"}]}}, error: null, isFromCache:false}
这里很棒,但电子邮件(如果共享),位置,用户名等详细信息不在:
GraphObject{graphObjectClass=GraphUser, state={"id":"60711232217","name":"Test"}}
我应该在哪里设置权限?这是我的要求:
{Request: session: {Session state:OPENED, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[email, user_location, user_friends, friends_location, basic_info]}, appId:111111}, graphPath: me/friends, graphObject: null, restMethod: null, httpMethod: GET, parameters: Bundle[{access_token=dasdasdasdasdsada, format=json, sdk=android, migration_bundle=fbsdk:20130708}]}
我应该在哪里添加这些权限以获取更多详细信息?
谢谢。
答案 0 :(得分:6)
转到此链接 Graphapilink
单击Graph API Explorer图标 - &gt; 然后选择您的应用程序名称“YourApplication” - &gt; 然后单击GetAccesTocken .it显示Select Permission Pop Up窗口.-&gt;然后选择Extended Permission选项卡。
最后,您将选择所需的权限,如上图所示
答案 1 :(得分:2)
休息看下面的图像.. 您必须设置正确的权限,并在我的个人资料中查看它的工作原理
结果你会得到
答案 2 :(得分:1)
您的查询:
"me/friends?fields=id,name,location,email"
这意味着您正在尝试获取姓名,位置和电子邮件。您可以获取名称,但对于位置,您需要获得权限friends_location
; 电子邮件 - Facebook不允许您提取朋友的电子邮件。
我希望我不必为每个朋友创建一个获取数据的请求
当然不是。您的查询是正确的,您将在结果中得到一个数组 - 就像 -
{
"data": [
{
"name": Friend1_Name,
"location": {
"id": Friend1_LocationID,
"name": Friend1_Location
},
"id": Friend1_ID
},
{
"name": Friend2_Name,
"location": {
"id": Friend2_LocationID,
"name": Friend2_Location
},
"id": Friend2_ID
},
....
....
]
}
如果你正在 -
“必须使用活动访问令牌来查询有关当前用户的信息。”,“type”:“OAuthException”
这意味着(当前)用户尚未登录您的应用,或者会话已过期。因此,登录/验证用户然后进行API调用。