web-dev-qa-db-ja.com

user_idを使用してGoogle+プロフィール画像のURLを取得する

多くのソーシャルネットワークAPIが、user_idまたはユーザー名を使用して、ユーザーのプロフィール写真へのURLを作成する方法を提供することを知っています。 Facebookの場合、次のようになります。

http://graph.facebook.com/user_id/picture?type=square

Google Plusにはこのようなものがありますか?または、APIコールなしでユーザーの写真を取得する他の方法は??

88
ArVan

Googleはポリシーを変更したため、Googleプロフィール画像を取得する古い方法は現在は機能しません。

https://plus.google.com/s2/photos/profile/(user_id)?sz = 15

これを行うための新しい方法は

リクエストURL

https://www.googleapis.com/plus/v1/people/115950284...320?fields=image&key={YOUR_API_KEY}

以下に示すように、json形式のGoogleプロフィール画像のURLが表示されます

応答:

{
    "image": 
    {
         "url": "https://lh3.googleusercontent.com/-OkM...AANA/ltpH4BFZ2as/photo.jpg?sz=50"
    }
}


here から必要になる可能性のあるURLで送信するためのその他のパラメーターを見つけることができます

詳細については、同じタイプの問題について回答した特定の質問を確認することもできます GoogleプラスのユーザーIDでユーザー画像を取得する方法

ハッピーコーディング!!

98
Deepak Goswami

更新:以下の方法は2015年以降機能しません

プロフィール画像を取得することは可能で、サイズを設定することもできます:

https://plus.google.com/s2/photos/profile/<user_id>?sz=<your_desired_size>

例:サイズを100ピクセルに設定した私のプロフィール写真:

https://plus.google.com/s2/photos/profile/116018066779980863044?sz=100

画像タグでの使用:

<img src="https://plus.google.com/s2/photos/profile/116018066779980863044?sz=100" width="100" height="100">

うまくいきますように!

93
Emil Stenström

更新:Googleはこのメソッドのサポートを停止し、404(not found)エラーを返すようになりました。


このURLはすべて、ユーザーのプロフィール写真を取得します。

https://www.google.com/s2/photos/profile/{user_id}
https://plus.google.com/s2/photos/profile/{user_id}
https://profiles.google.com/s2/photos/profile/{user_id}

Google APIから取得したのと同じ画像URLにリダイレクトされます。
lh6.googleusercontent.com/-x1W2-XNKA-A/AAAAAAAAAAI/AAAAAAAAAAA/ooSNulbLz8U/photo.jpg

最も簡単なのは、画像ソースのように直接使用することです:

<img src="https://www.google.com/s2/photos/profile/{user_id}">

それ以外の場合、Google API呼び出しとまったく同じURLを取得するには、画像ヘッダーを読み取ることができます。
たとえばPHPの場合:

$headers = get_headers("https://www.google.com/s2/photos/profile/{user_id}", 1);
echo "<img src=$headers[Location]>";

記事 PHPを使用してGoogle Plusのプロフィール写真を取得する で説明されています。

47
Salvador

アプローチ1:(動作しなくなりました)

https://plus.google.com/s2/photos/profile/<user_id>?sz=<your_desired_size>

アプローチ2:(各リクエストはAPIレート制限でカウントされます。これは無料で1日あたり10,000リクエストです)

https://www.googleapis.com/plus/v1/people/<user_id>?fields=image&key={YOUR_API_KEY}

次の応答形式で:

{ "image": { "url": "lh5.googleusercontent.com/-keLR5zGxWOg/.../photo.jpg?sz=50"; } }

アプローチ3:(APIキーは不要)

http://picasaweb.google.com/data/entry/api/user/<user_id>?alt=json

json応答では、「gphoto $ thumbnail」という名前のプロパティを取得します。このプロパティには、次のようなプロフィール画像のURLが含まれています。

http://lh6.ggpht.com/-btLsReiDeF0/AAAAAAAAAAI/AAAAAAAAAAA/GXBpycNk984/s64-c/filename.jpg

URLの「s64-c」の部分に注目してください。これは、イメージサイズが64であることを意味します。「s100-c」などの他の値を使用してみましたが、うまくいきました。また、「s64-c」部分を削除し、「?sz = 100」パラメーターを追加した場合も、現在は機能します。これはgplusユーザーのプロフィール写真を取得するのにあまり良い方法ではありませんが、利点はAPIキーを必要としないことです。

26
Masum

Google、APIは不要:

$data = file_get_contents('http://picasaweb.google.com/data/entry/api/user/<USER_ID>?alt=json');
$d = json_decode($data);
$avatar = $d->{'entry'}->{'gphoto$thumbnail'}->{'$t'};

//出力例: https://lh3.googleusercontent.com/-2N6fRg5OFbM/AAAAAAAAAAI/AAAAAAAAADE/2-RmpExH6iU/s64-c/photo.jpg

変更:サイズの「s64」の64

10
Shawn Rebelo

現在ログインしているユーザーのプロフィール写真を表示したい場合、{user_id}を知る必要さえありません。単にhttps://plus.google.com/s2/photos/profile/meを使用するだけで十分です。

5
Danny Ruijters

Google+ APIの people.get メソッドを使用して、プロフィール画像のURLを取得できます。それには余分な往復が必要ですが、画像を取得する最も信頼できる方法です。

技術的にURL https://s2.googleusercontent.com/s2/photos/profile/{id}?sz={size}を使用して、最終URLにリダイレクトすることもできます。 {id}は、GoogleユーザーIDまたは古いGoogleプロフィールのユーザー名のいずれかです(ユーザー名はまだ持っていましたが、新しいものを作成することはできません)。 {size}は、ピクセル単位の写真の望ましいサイズです。これはnot文書化され、サポートされている機能であることがほぼ確実です。無断で。しかし、迅速なプロトタイプや小規模な1回限りのアプリケーションでは、それで十分な場合があります。

3
Will Norris

/ s2/profile/photoのURLにアクセスしようとすると、ほとんどのユーザーで機能しますが、すべてではありません。

完全な証明方法は、Google + APIを使用することだけです。パブリックプロファイルデータを要求するためにユーザー認証は必要ないので、かなり簡単な方法です。

  1. https://cloud.google.com/console でGoogle+ APIキーを取得する

  2. 単純なGETリクエストを作成します: https://www.googleapis.com/plus/v1/people/+ <username>?key =

ユーザー名の前の+に注意してください。代わりにユーザーID(長い数字列)を使用する場合、+は必要ありません。

  1. 「image」:{「url」:「 https://lh4.googleusercontent.com/ .....その他画像のURL .... "}
2
Erwan

従来のGoogle+ APIは2019年3月7日にシャットダウンされました。最近、一部の開発者への影響を緩和するシャットダウンプランの変更が行われました。

2
Michael de Oz

可能なすべてを試してみました..これが作業コードの最後の部分です。それを探している人を助けることを願っています。

    <?
$url='https://www.googleapis.com/plus/v1/people/116599978027440206136?fields=image%2Furl&key=MY_API_KEY&fields=image';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
$d = json_decode($response);
$avatar_url = $d->{'image'}->{'url'};
echo $avatar_url;
?>
1
suraj jain

Flutterを使用する場合、people.googleapis.comエンドポイント経由でアクセスできます。コードはgoogle_sign_inライブラリを使用します

import 'package:google_sign_in/google_sign_in.Dart';

Future<String> getPhotoUrl(GoogleSignInAccount account, String userId) async {
  // final authentication = await account.authentication;
  final url = 'https://people.googleapis.com/v1/people/${userId}?personFields=photos';
  final response = await http.get(
    url,
    headers: await account.authHeaders
  );

  final data = json.decode(response.body);
  return data['photos'].first['url'];
}

次のようなものが得られます

{
  resourceName: people/998812322529259873423, 
  etag: %EgQBAzcabcQBAgUH, 
  photos: [{metadata: {primary: true, source: {type: PROFILE, id: 107721622529987673423}}, 
  url: https://lh3.googleusercontent.com/a-/abcdefmB2p1VWxLsNT9WSV0yqwuwo6o2Ba21sh_ra7CnrZ=s100}]
}

ここで、urlはアクセス可能な画像のURLです。

0
onmyway133