多くのソーシャルネットワークAPIが、user_idまたはusernameを使用して、ユーザーのプロフィール写真へのURLを構築する方法を提供していることを知っています。Facebookの場合、次のようになります。
http://graph.facebook.com/user_id/picture?type=square
Google Plusにこのようなものはありますか?または、API呼び出しなしでユーザーの写真を取得する他の方法は?
多くのソーシャルネットワークAPIが、user_idまたはusernameを使用して、ユーザーのプロフィール写真への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=150
これを行う新しい方法は
リクエスト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"
}
}
あなたがここから必要とするかもしれないURLで送信するより多くのパラメータが見つかります
詳細については、同じタイプの問題について私が回答した所与の質問を確認することもでき ます。
ハッピーコーディング!!
<img>
タグ内では使用できません
.../-OkM...AANA/ltpH...as/photo.jpg?sz=512
更新: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(見つかりません)エラーを返すようになりました。
このすべての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}
これらは、
lh6.googleusercontent.com / -x1W2-XNKA-A / AAAAAAAAAAA / AAAAAAAAAAA / ooSNulbLz8U / photo.jpgのような醜いリンクである、Google APIから取得したのと同じ画像URLにリダイレクトされます。
最も簡単なのは、画像ソースのように直接使用することです。
<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:(各リクエストは、無料で1日あたり10,000リクエストであるAPIレート制限にカウントされます)
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
画像サイズが64であることを意味する「s64-c」の部分のURLに気づくかもしれませんが、「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
people.getを使用して、プロフィール画像のURLを取得できますGoogle+ APIのメソッドをます。これには追加の往復が必要ですが、イメージを取得する最も信頼できる方法です。
技術的にはhttps://s2.googleusercontent.com/s2/photos/profile/{id}?sz={size}
、最終的なURLにリダイレクトするURL を使用することもできます。 {id}
GoogleユーザーIDまたは古いGoogleプロフィールのユーザー名の1つです(これらはまだそれらを持っているユーザーのために存在しますが、新しいものを作成することはもうできないと思います)。 {size}
ピクセル単位の写真の必要なサイズです。これが文書化され、サポートされている機能ではないことはほぼ間違いないので、重要なことはいつでも予告なしになくなる可能性があるため、この機能に依存することはありません。ただし、迅速なプロトタイプまたは小規模な1回限りのアプリケーションの場合は、それで十分な場合があります。
/ s2 / profile / photoのURLにアクセスしようとすると、ほとんどのユーザーで機能しますが、すべてのユーザーで機能するわけではありません。
唯一の完全な証明方法は、Google + APIを使用することです。パブリックプロファイルデータを要求するのにユーザー認証は必要ないので、これはかなり単純な方法です。
https://cloud.google.com/consoleで Google+ APIキーを取得します
https://www.googleapis.com/plus/v1/people/+ <ユーザー名>?key = への簡単なGETリクエストを作成します。
ユーザー名の前の+に注意してください。代わりにユーザーID(数字の長い文字列)を使用する場合、+は必要ありません。
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です。
可能なすべてのものを試してみました..これが作業コードの最後の部分です。それがそれを探している誰かを助けることを願っています。
<?
$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;
?>
簡単な答え:いいえ
写真を取得するには、person APIをクエリし、プロフィールのimage.urlデータを取得する必要があります。私の知る限り、userIDを含むそのURLのデフォルトの形式はありません。