0

Facebook API は初めてです。このリンクを使用して、Graph API から FQL クエリを初めて試します。

アルバムIDでアルバムから写真を取得しようとしています。URL でFacebook オブジェクトを使用して要求するとhttps://graph.facebook.com/10150146071791729/photos&access_token=ACCESS_TOKEN、次の応答が返されます (JSON オブジェクトに解析する前)。{"id":"https://graph.facebook.com/10150146071791729/photos","shares":2}. そして、解析後の JSON オブジェクトの長さを出力して確認しましたが、これは 2 です。Web ブラウザーに同じ URL をコピーして貼り付けると、期待どおりの応答 (取得した FQL クエリの応答) が得られます。これが私のコードです。

public void onComplete(Bundle values) {
                    String token = facebook.getAccessToken();
                    System.out.println("Token: " + token);
                    try {
                        String response = facebook.request("https://graph.facebook.com/10150146071791729/photos&access_token=ACCESS_TOKEN");
                        System.out.println("response :"+response);
                        JSONObject obj = Util.parseJson(response);
                        System.out.println("obj length : " + obj.length());
                        Iterator iterator = obj.keys();
                        while(iterator.hasNext()){
                            String s = (String)iterator.next();
                            System.out.println(""+s+" : "+obj.getString(s));
                        }

                    } catch (Throwable e) {
                        e.printStackTrace();
                    }
                }

注: URL で使用される FQL クエリからアクセス トークンを取得しました。また、テスト プロジェクトであるため、セッション (ログイン/ログアウト) ロジックは記述しませんでした。

4

2 に答える 2

0

あなたの要求は間違っています。そのはず

"https://graph.facebook.com/10150146071791729/photos?access_token=ACCESS_TOKEN"

写真の後の「&」を「?」に置き換えます。

さらに 2 つのこととして、FQL クエリではなく、Graph API クエリを作成しています。

次に、アクセス トークンを公開しないでください。必要に応じて、アクセス トークンを使用して Facebook 情報を編集できるようになりました。

編集: Android Facebook SDK を使用する場合、完全なグラフ パスを使用する必要はありません。代わりに、

facebook.request("10150146071791729/photos")

アクセス トークンは Facebook オブジェクトに既にあるため、追加する必要はありません。お役に立てれば。

于 2012-09-22T12:15:07.057 に答える
0

最も関連性の高いものを除いて多くのコードが提供されていないため、アルバムから写真にアクセスする方法をいくつか紹介しましょう。

最初の方法 (完全な URL を使用してリクエストを行いたい場合)

String URL = "https://graph.facebook.com/" + YOUR_ALBUM_ID
        + "/photos&access_token="
        + Utility.mFacebook.getAccessToken() + "?limit=10";

try {

    HttpClient hc = new DefaultHttpClient();
    HttpGet get = new HttpGet(URL);
    HttpResponse rp = hc.execute(get);

    if (rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
        String queryPhotos = EntityUtils.toString(rp.getEntity());
        Log.e("PHOTOS RESULT", queryPhotos);
    }
} catch (Exception e) {
    e.printStackTrace();
}

2番目の方法(前述の@Vinay Shenoyのように完全なURLを使用しない場合)

try {
    Bundle paramUserInfo = new Bundle();
    paramUserInfo.putString(Facebook.TOKEN, Utility.mFacebook.getAccessToken());

    String resultPhotos = Utility.mFacebook.request("YOUR_ALBUM_ID/photos", paramUserInfo, "GET");
    Log.e("PHOTOS", resultPhotos);
} catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
}

個人的な注意として、私はアプリケーション全体でほぼ完全に最初の方法に従います。ページングを無限に使用できますListViews

そうは言っても、どこかで簡単なデータが必要な場合は、2 番目の方法を使用します。どちらも機能し、どちらか (または両方) があなたのお役に立てば幸いです。

于 2012-09-22T14:23:55.460 に答える