多くのソーシャルネットワークAPIが、user_idまたはユーザー名を使用して、ユーザーのプロフィール写真へのURLを作成する方法を提供することを知っています。 Facebookの場合、次のようになります。
http://graph.facebook.com/user_id/picture?type=square
Google Plusにはこのようなものがありますか?または、APIコールなしでユーザーの写真を取得する他の方法は??
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でユーザー画像を取得する方法
ハッピーコーディング!!
更新:以下の方法は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">
うまくいきますように!
更新: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のプロフィール写真を取得する で説明されています。
アプローチ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キーを必要としないことです。
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
現在ログインしているユーザーのプロフィール写真を表示したい場合、{user_id}を知る必要さえありません。単にhttps://plus.google.com/s2/photos/profile/me
を使用するだけで十分です。
Google+ APIの people.get メソッドを使用して、プロフィール画像のURLを取得できます。それには余分な往復が必要ですが、画像を取得する最も信頼できる方法です。
技術的にURL https://s2.googleusercontent.com/s2/photos/profile/{id}?sz={size}
を使用して、最終URLにリダイレクトすることもできます。 {id}
は、GoogleユーザーIDまたは古いGoogleプロフィールのユーザー名のいずれかです(ユーザー名はまだ持っていましたが、新しいものを作成することはできません)。 {size}
は、ピクセル単位の写真の望ましいサイズです。これはnot文書化され、サポートされている機能であることがほぼ確実です。無断で。しかし、迅速なプロトタイプや小規模な1回限りのアプリケーションでは、それで十分な場合があります。
/ s2/profile/photoのURLにアクセスしようとすると、ほとんどのユーザーで機能しますが、すべてではありません。
完全な証明方法は、Google + APIを使用することだけです。パブリックプロファイルデータを要求するためにユーザー認証は必要ないので、かなり簡単な方法です。
https://cloud.google.com/console でGoogle+ APIキーを取得する
単純なGETリクエストを作成します: https://www.googleapis.com/plus/v1/people/+ <username>?key =
ユーザー名の前の+に注意してください。代わりにユーザーID(長い数字列)を使用する場合、+は必要ありません。
従来のGoogle+ APIは2019年3月7日にシャットダウンされました。最近、一部の開発者への影響を緩和するシャットダウンプランの変更が行われました。
可能なすべてを試してみました..これが作業コードの最後の部分です。それを探している人を助けることを願っています。
<?
$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;
?>
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です。