0

Facebook のプロフィール画像を取得し、私のディレクトリ「www.site.com/images」にダウンロードします。

<?php $url = "https://graph.facebook.com/$id/picture?width=350&height=500&redirect=false"; ?>

変数「$id」はテキストフィールドから取得されます。Facebookが画像に配置する「リダイレクト」を回避しようとしたため、「実際のURL」を取得するために、JSONから抽出することにしました。ブラウザでこれを受け取ります:

  "url": "https://fbcdn-profile-a.akamaihd.net/hprofil[...]",
  "width": 299,
  "height": 426,
  "is_silhouette": false

必要なのは、抽出して Web サイトのディレクトリに保存する「実際の URL」だけです。

$.getJSON は、情報を分離する最も簡単な方法のようです。

概要

  • PHP または JAVASCRIPT での JSON の抽出/区切りスクリプト
  • または、「イメージ」を「ディレクトリ」に保存します。
4

2 に答える 2

3

私の解決策:

カールを使用した PHP

<?php
  $ch = curl_init("http://graph.facebook.com/$id/picture?width=350&height=500&redirect=false");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); // Mean 5 seconds
  $content = curl_exec($ch);
  $data = json_decode($content, true);
  curl_close($ch);
  var_dump($data["data"]["url"]);

PHP と file_get_contents()

<?php
  $content = file_get_contents("http://graph.facebook.com/$id/picture?width=350&height=500&redirect=false");
  $data = json_decode($content, true);
  var_dump($data["data"]["url"]);

jQueryを使ったJavaScript

var url = "http://graph.facebook.com/ID/picture?width=350&height=500&redirect=false";
$.get(url,function(resp) {
  alert(resp.data.url);
});

編集

「&redirect=false」を削除しようとしましたか?

"https://graph.facebook.com/$id/picture?width=350&height=500"
redirect to
"https://fbcdn-profile-a.akamaihd.net/hprofil[...]"

したがって、次のことができます。

<?php
  $url = "https://graph.facebook.com/$id/picture?width=350&height=500";
  $data = file_get_contents($url);
  $fp = fopen("img$id.jpg","wb");
  if (!$fp) exit;
  fwrite($fp, $data);
  fclose($fp);

ピクチャ グラフの詳細

于 2013-03-29T11:16:36.583 に答える
0

fbから画像を保存するときにこのコードを使用しました。

$dir = "your_directory";
$img = md5(time()).'.jpg';
$url = "some_value";
$ch = curl_init($url);
$fp = fopen($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.$dir.DIRECTORY_SEPARATOR.$img, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
curl_close($ch);
fclose($fp);
于 2013-03-29T12:05:36.630 に答える