1

タイトルが示すように、フィールドがインストールされた状態でフレンド リストの取得をリクエストしようとすると、次のようになります。

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

logcat に次のエラーが表示されます。

"Invalid OAuth access token"

Facebook API を見ると、インストールされているアプリケーション アクセス トークンを取得する必要があることがわかります。そこで、次を使用して、appId とアプリ シークレットを使用してアプリケーション アクセス トークンを生成しました。

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

あなたのコメントから、友人のリストを持っていると仮定します。次に、各ユーザーを呼び出す必要はなく、代わりに 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

/ me / friendsをリクエストしないでください。アプリ アクセス トークンを使用すると、API は「私」が誰であるかを認識できないため、代わりにrequest / userid / friendsをリクエストしてください。

申し訳ありませんが、以前は間違っていました。ユーザー アクセス トークンを使用して、/me/friends に対してリクエストを設定するだけです...</p>

于 2012-06-19T13:38:15.323 に答える