自分のFacebookからユーザーのプロフィール画像を取得する CMSURL (つまり、 http://facebook.com/users_unique_url )。どうすればこれを達成できますか?ユーザーがAllowを必要とせずにユーザーのプロフィール画像URLを取得するFaceboook API呼び出しはありますか?
単純にこれを通してデータを取得します URL :
http://graph.facebook.com/userid_here/picture
写真を取得したいユーザーのIDでuserid_here
を置き換えます。 HTTPSも使用できます。
PHPのfile_get_contents
関数を使用してそのURLを読み取り、取得したデータを処理することができます。
リソース:
http://developers.facebook.com/docs/api
注:php.ini
では、 OpenSSL 拡張子を使用してfile_get_contents
関数を使用できるようにする必要があります。そのURLを読むためのPHP。
表示するには:
<img src="//graph.facebook.com/{{fid}}/picture">
<img src="//graph.facebook.com/{{fid}}/picture?type=large">
注:これを使わないでください。下記の@ Foreeverのコメントを参照してください。
$img = file_get_contents('https://graph.facebook.com/'.$fid.'/picture?type=large');
$file = dirname(__file__).'/avatar/'.$fid.'.jpg';
file_put_contents($file, $img);
$ fidはFacebook上のあなたのユーザーIDです。
注: "18+"とマークされた画像の場合、18歳以上のユーザーからの有効なaccess_tokenが必要になります。
<img src="//graph.facebook.com/{{fid}}/picture?access_token={{access_token}}">
Graph API v2.0はユーザー名を使って問い合わせることはできません、あなたは常にuserId
を使うべきです。
UPDATE:
2012年8月末から、APIが更新され、ユーザーのプロフィール写真をさまざまなサイズで取得できるようになりました。 URLパラメータとしてオプションのwidthフィールドとheightフィールドを追加します。
https://graph.facebook.com/USER_ID/picture?width=WIDTH&height=HEIGHT
WIDTH
とHEIGHT
は、要求されたディメンション値です。
これは、縦横比を維持しようとしている間、WIDTH
x HEIGHT
の最小サイズのプロフィール写真を返します。例えば、
https://graph.facebook.com/redbull/picture?width=140&height=110
戻る
{
"data": {
"url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-ash4/c0.19.180.142/s148x148/2624_134501175351_4831452_a.jpg",
"width": 148,
"height": 117,
"is_silhouette": false
}
}
END UPDATE
ユーザーのプロフィール写真を取得するには、
https://graph.facebook.com/USER_ID/picture
USER_ID
は、ユーザーID番号またはユーザー名です。
特定のサイズのユーザープロフィール写真を取得するには、を呼び出します。
https://graph.facebook.com/USER_ID/picture?type=SIZE
SIZE
は次のいずれかの単語に置き換える必要があります。
square
small
normal
large
あなたが望むサイズに応じて。
この呼び出しは、 URL を、選択したtypeパラメータに基づくサイズの単一の画像に返します。
例えば:
https://graph.facebook.com/USER_ID/picture?type=small
画像の小さいバージョンへのURLを返します。
APIは、プロフィール画像の最大サイズのみを指定し、実際のサイズは指定しません。
平方:
最大幅と高さは50ピクセルです。
小さい
最大幅50ピクセル、最大高さ150ピクセル。
普通
最大幅100ピクセル、最大高さ300ピクセル。
大
最大幅200ピクセル、最大高さ600ピクセル。
デフォルトのUSER_ID/pictureを呼び出すと、正方形のタイプになります。
説明
電話をかけた場合(上記の例のとおり)
https://graph.facebook.com/redbull/picture?width=140&height=110
それは JSON レスポンスを返します あなたがFacebook SDKリクエストメソッドの一つを使っているなら それ以外の場合は、画像自体が返されます。常にJSONを取得するには、以下を追加してください。
&redirect=false
そのようです:
https://graph.facebook.com/redbull/picture?width=140&height=110&redirect=false
バイナリコンテンツではなく画像のURLを取得するには
$url = "http://graph.facebook.com/$fbId/picture?type=$size";
$headers = get_headers($url, 1);
if( isset($headers['Location']) )
echo $headers['Location']; // string
else
echo "ERROR";
ユーザー名ではなく、自分のFACEBOOK IDを使用する必要があります。あなたはそこにあなたのFacebookのIDを取得することができます:
フルサイズのプロフィール画像をサーバーに保存するための単純な1行のコード。
<?php
copy("https://graph.facebook.com/FACEBOOKID/picture?width=9999&height=9999", "picture.jpg");
?>
これは、opensslがphp.iniで有効になっている場合にのみ機能します。
受け入れられた答えへのコメントとしてこれを加えました、しかし、それはより長い説明に値すると感じました。 2015年4月頃から、これはおそらく数回発生するでしょう。
グラフapiのV2以降、受け付けられた回答はユーザ名を使用して機能しなくなりました。だから今、あなたは最初にユーザーIDが必要です、そしてあなたはもうこれを得るためにユーザー名を使うことはできません。さらに複雑なことに、プライバシー上の理由から、Facebookは現在、アプリごとのユーザーIDを変更しています( https://developers.facebook.com/docs/graph-api/reference/v2.2/userを参照)。 / と https://developers.facebook.com/docs/apps/upgrading/#upgrading_v2_0_user_ids )になります。使用できるユーザーIDを取得するための適切な認証。技術的には、プロファイルpicはまだ一般公開されており、/ userid/pictureで入手できます( https://developers.facebook.com/docs/graph-api/reference/v2.0/userのドキュメントを参照)。/picture そしてこの例のユーザー: http://graph.facebook.com/v2.2/4/picture?redirect=0 )しかし考え出すユーザーの標準ユーザーIDを自分のプロフィールだけでは不可能と思われる - あなたのアプリは、私のユースケースでは(FBプロフィールのリンクの隣にプロフィール写真を表示するだけで)やり過ぎるアプリとのやり取りを承認する必要があります。
ユーザー名に基づいてプロフィール写真を取得する方法、またはプロフィール写真を取得するために使用するユーザーID(代替のものでも)を取得する方法を誰かが見つけた場合は、共有してください!それまでの間、古いグラフのURLは2015年4月まで有効です。
一つの方法は、彼の答えに Gamlet posts というコードを使うことです。
curl.php
として保存してください
それからあなたのファイルで:
require 'curl.php';
$photo="https://graph.facebook.com/me/picture?access_token=" . $session['access_token'];
$sample = new sfFacebookPhoto;
$thephotoURL = $sample->getRealUrl($photo);
echo $thephotoURL;
詳細を把握するには少し時間がかかりました。プロフィール写真が公開されている場合でも、 curlのときにアクセストークンを取得する必要があります。 それ。
2015年4月からのPHP(HTTP GET)ソリューションの作業(PHP 5 SDKなし):
function get_facebook_user_avatar($fbId){
$json = file_get_contents('https://graph.facebook.com/v2.5/'.$fbId.'/picture?type=large&redirect=false');
$picture = json_decode($json, true);
return $picture['data']['url'];
}
Parametrで 'type'を変更することができます。
平方:
最大幅と高さは50ピクセルです。
小さい
最大幅50ピクセル、最大高さ150ピクセル。
普通
最大幅100ピクセル、最大高さ300ピクセル。
大
最大幅200ピクセル、最大高さ600ピクセル。
それをする方法があります;)
" http://it.toolbox.com/wiki/index.php/Use_curl_from_PHP_-_processing_response_headers "に感謝します。
<?php
/**
* Facebook user photo downloader
*/
class sfFacebookPhoto {
private $useragent = 'Loximi sfFacebookPhoto PHP5 (cURL)';
private $curl = null;
private $response_meta_info = array();
private $header = array(
"Accept-Encoding: gzip,deflate",
"Accept-Charset: utf-8;q=0.7,*;q=0.7",
"Connection: close"
);
public function __construct() {
$this->curl = curl_init();
register_shutdown_function(array($this, 'shutdown'));
}
/**
* Get the real URL for the picture to use after
*/
public function getRealUrl($photoLink) {
curl_setopt($this->curl, CURLOPT_HTTPHEADER, $this->header);
curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, false);
curl_setopt($this->curl, CURLOPT_HEADER, false);
curl_setopt($this->curl, CURLOPT_USERAGENT, $this->useragent);
curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($this->curl, CURLOPT_TIMEOUT, 15);
curl_setopt($this->curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($this->curl, CURLOPT_URL, $photoLink);
//This assumes your code is into a class method, and
//uses $this->readHeader as the callback function.
curl_setopt($this->curl, CURLOPT_HEADERFUNCTION, array(&$this, 'readHeader'));
$response = curl_exec($this->curl);
if (!curl_errno($this->curl)) {
$info = curl_getinfo($this->curl);
var_dump($info);
if ($info["http_code"] == 302) {
$headers = $this->getHeaders();
if (isset($headers['fileUrl'])) {
return $headers['fileUrl'];
}
}
}
return false;
}
/**
* Download Facebook user photo
*
*/
public function download($fileName) {
curl_setopt($this->curl, CURLOPT_HTTPHEADER, $this->header);
curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($this->curl, CURLOPT_HEADER, false);
curl_setopt($this->curl, CURLOPT_USERAGENT, $this->useragent);
curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($this->curl, CURLOPT_TIMEOUT, 15);
curl_setopt($this->curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($this->curl, CURLOPT_URL, $fileName);
$response = curl_exec($this->curl);
$return = false;
if (!curl_errno($this->curl)) {
$parts = explode('.', $fileName);
$ext = array_pop($parts);
$return = sfConfig::get('sf_upload_dir') . '/tmp/' . uniqid('fbphoto') . '.' . $ext;
file_put_contents($return, $response);
}
return $return;
}
/**
* cURL callback function for reading and processing headers.
* Override this for your needs.
*
* @param object $ch
* @param string $header
* @return integer
*/
private function readHeader($ch, $header) {
//Extracting example data: filename from header field Content-Disposition
$filename = $this->extractCustomHeader('Location: ', '\n', $header);
if ($filename) {
$this->response_meta_info['fileUrl'] = trim($filename);
}
return strlen($header);
}
private function extractCustomHeader($start, $end, $header) {
$pattern = '/'. $start .'(.*?)'. $end .'/';
if (preg_match($pattern, $header, $result)) {
return $result[1];
}
else {
return false;
}
}
public function getHeaders() {
return $this->response_meta_info;
}
/**
* Cleanup resources
*/
public function shutdown() {
if($this->curl) {
curl_close($this->curl);
}
}
}
私は考えていました - 多分IDが便利なツールになるでしょう。ユーザーが新しいアカウントを作成するたびに、それはより高いIDを取得する必要があります。 Googleで調べたところ、metadatascience.comのIDとMassoud Seifiでアカウント作成日を推定する方法があることがわかりました。
この記事を読む:
そして、これがダウンロードするためのIDです。
ブログ投稿Facebookのグラフオブジェクトの図をつかむは別の解決策を提案するかもしれません。チュートリアルのコードをFacebookの Graph API およびそのPHP SDKライブラリと共に使用してください。
...file_get_contentsを使わないようにしてください(結果に直面する準備ができていない限り - file_get_contents vs curl を参照)。 ).
あなたはプロフィール写真のサイズを心配していますか? PHPを使用してFacebookでログインを実装した時点で。 Facebook PHP SDKで大きなサイズのプロフィール写真を取得する簡単な方法を紹介します。また、あなたはFacebookのプロフィールのカスタムサイズの画像を取得することができます。
次のコード行を使用して、プロフィール写真の寸法を設定します。
$ userProfile = $ facebook-> api( '/ me?fields = picture.width(400).height(400)');
この記事をチェックしてください:http://www.codexworld.com/how-to-guides/get-large-size-profile-picture-in-facebook-php-sdk/
@NaturalBornCamper、
いいコード!これがそのようなプロセスのためのクリーンカットコード関数です。
function get_raw_facebook_avatar_url($uid)
{
$array = get_headers('https://graph.facebook.com/'.$uid.'/picture?type=large', 1);
return (isset($array['Location']) ? $array['Location'] : FALSE);
}
これは生のFacebookアバター画像URLを返します。それであなたがそれであなたがやりたいことなら何でもしてください!
URI = https://graph.facebook.com/{}/picture?width=500'.format(uid)
あなたは オンラインフェイスブックIDファインダーツール を通してプロフィールURIを得ることができます
Param型に、可能な値small、normal、large、squareを渡して渡すこともできます。