1

正如标题所说,当我尝试请求获取安装了该字段的朋友列表时:

"me/friends?Fields=installed&access_token=..."

我在我的 logcat 中收到以下错误:

"Invalid OAuth access token"

在查看 facebook api 时,我看到安装需要获取应用程序访问令牌。因此,我使用 appId 和 app Secret 生成了应用程序访问令牌:

https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=APP_ID&client_secret=APP_SECRET

下面是代码:

try {

 JSONObject obj = Util.parseJson(mFacebook.request("me/friends?fields=installed&access_token=..."));

  Log.d("json Response", obj.toString());
  JSONArray array = obj.optJSONArray("data");
  if (array != null) {
                      for (int i = 0; i < array.length(); i++) {
                        //  String name = array.getJSONObject(i).getString("name");

                          String id = array.getJSONObject(i).getString("id");

                          Log.d("Friends: ",id);
                      }
                  } 
  }catch (Exception e){
    Log.d("Friends:", e.getMessage());
  }

任何人都知道为什么这样做我一直在寻找。

干杯

4

2 回答 2

1

您在身份验证后得到的是 App Access Token。

报价:Authenticating as an App allows you to obtain an access token which allows you to make request to the Facebook API on behalf of an App rather than a User. This is useful, for example to modify the parameters of your App, create and manage test users, or read your application's insights for example. App access tokens can also be used to publish content to Facebook on behalf of a user who has granted a publishing permission to your application

来自facebook 文档

您的案例需要的是用户访问令牌。参考这个。用户需要对您的应用进行身份验证并授予访问权限,您才能访问他的好友列表。

编辑

检查单个用户的 url 是 https://graph.facebook.com/ {uid}?fields=installed&access_token=< ACCESS_TOKEN >

您正在尝试获取用户好友列表,然后检查该应用程序是否已安装。我认为没有用户访问令牌是不可能获得用户朋友列表的。

编辑 2

假设从您的评论中知道您有 frind 的列表。然后,您无需为每个用户调用,而是可以使用 FQL。

https://graph.facebook.com/fql?q=SELECT uid,is_app_user from user where uid IN (uid1,uid2)

如果你有用户访问令牌,那么你可以直接这样做。

https://graph.facebook.com/fql?q=SELECT uid,is_app_user from user where uid IN (SELECT uid2 FROM friend WHERE uid1 = me())

希望这能解决您的问题。

于 2012-06-19T13:01:42.893 回答
0

不要请求//朋友——因为有了应用程序访问令牌,API 将不知道“我”应该是谁——而是请求/用户 ID /朋友

抱歉,我之前错了——方法是使用用户访问令牌,然后将请求设置为 /me/friends...</p>

于 2012-06-19T13:38:15.323 回答