10

APIに従って、連絡先の写真以外はすべて取得できました。

返された xml から img の URL と gd:etag を取得できます。以下は Google API の例です。これは私が得たものと同じですが、属性の値はもちろん私の連絡先とは異なります。

    <link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*'
  href='https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de'
  gd:etag='"KTlcZWs1bCp7ImBBPV43VUV4LXEZCXERZAc."'>

問題は、それを表示する方法がわからないことです。試してみると、URL の最後の部分 (つまり、"/32432eewqdweq") だけが表示され、画像は表示されません。

私は Rails を使用しており、Web 開発を始めて 2 週間目です。

どんな助けでも大歓迎です!

ありがとう、

ゴラン

4

4 に答える 4

22

URL に対してリクエストを行う必要がありますが、クエリ パラメータとして access_token も含める必要があります。

したがって、例を使用して、access_token が ABCDEF123456ABCDEF である場合、作成する GET 要求は次のようになります。

https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de?access_token=ABCDEF123456ABCDEF

于 2011-10-03T19:03:24.567 に答える
3

Google の API ドキュメントによると、ちょっとしたヒント:

注: 連絡先に写真がない場合、写真リンク要素には gd:etag 属性がありません。

詳細はこちら

于 2013-10-18T08:15:27.827 に答える
1

まず、そのURLに対して承認されたGETを作成する必要があります。つまり、Authorizationヘッダーに「OAuth」+AccessTokenを配置する必要があります。また、私は試していませんが、Savilが言ったように、クエリパラメータとしてアクセストークンを使用すると、同じことを実現できます。

いずれにせよ、Googleは画像のバイト数で応答するため、そのまま表示することはできません。バイト配列をサーバー内のファイルに保存するか(これは良い解決策ではないと思います)、写真を表示する別の方法を見つける必要があります

詳細については、連絡先の写真に関するGoogleのドキュメントをご覧ください。

これはかなり古い質問ですが、それでもこれが役立つことを願っています

于 2012-03-15T16:15:00.547 に答える
0

連絡先を取得するために使用されるものと同じ承認済みリクエスト コードを使用し、URL を連絡先画像のリンク rel URL に置き換えるだけです。応答はイメージのバイトになります。次のコードを使用して、画像をレスポンスとして返します。

        //'in' is the inputStream returning from the call, response is the HttpServletResponse
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        byte[] buffer = new byte[4096];
        int read;
        while (true) {
             if ((read = in.read(buffer)) != -1) {
                out.write(buffer, 0, read);
            } else {
                break;
            }
        }
        response.setContentType("image/jpeg");
        response.setContentLength(buffer.length);
        request.getSession().setAttribute("image", new String(out.toByteArray()));
        response.getOutputStream().write(buffer); 
于 2012-08-04T18:38:16.257 に答える