数週間前に簡単な Facebook アプリケーションを作成しました。ユーザーに許可を求めることで、Facebook API を介してユーザー情報を取得していました。しかし、それは先週何もないところから機能しなくなり、それ以来答えを探していました.
基本的に、以前は file_get_contents を使用して Facebook API からユーザー情報を取得していました。しかし、失敗し始めた後、cURLに変更しようとしましたが、まだ機能していません。Facebook PHP-SDK を使用してみましたが、コードをデバッグして makeRequest メソッドにしましたが、すべてのメソッドで同じ結果が得られました。
Facebook オープン グラフ URL に対して cURL 要求を行うと、要求はエラー番号 7 または 28 で失敗します。これらは両方とも、サイトに接続できないか、タイムアウトになることを示すエラー コードです。
私のサイトは共有ホスティングにあり、cURL を使用して他のサイトを取得しようとしましたが、正常に動作します。しかし、http://www.facebook.comを取得しようとすると、cURL は FALSE を返します。
ホスティングにはSSL証明書があり、cURLが有効になっています。そして、しばらく前に正常に機能していました。これに関するさまざまなスレッドや投稿を読み、さまざまな cURL オプションを試しましたが、どれも機能していないようです。
何か案は?
index.php
$auth_url = "https://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($GLOBALS['canvas_page']) . "&scope=publish_stream,email";
$signed_request = $_POST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
if (empty($data["user_id"])) {
echo("<script> top.location.href='" . $auth_url . "'</script>");
} else {
$_SESSION['oauth_token'] = $data['oauth_token'];
$_SESSION['user_id'] = $data["user_id"];
$user = new User($_SESSION['user_id'], $_SESSION['oauth_token']);
ユーザークラス
function __construct($fid, $at) {
$this->facebook = new Facebook(array(
'appId' => "<APP_ID>",
'secret' => "<FACEBOOK_SECRET_ID>",
));
$this->fid = $fid;
$this->token = $at;
if ($data = $this->getGraph()) {
...
}
}
public function getGraph() {
$session = $this->facebook->getUser();
if ($session) {
try {
$access_token = $this->facebook->getAccessToken();
$attachment = array('access_token' => $access_token);
//$result = $this->facebook->api('/' . $this->fid, 'GET', $attachment);
$result = $this->facebook->api('/' . $this->fid, 'GET');
return $result;
} catch (FacebookApiException $e) {
return false;
}
}
}
ノート:
- Facebook PHP SDK メソッドを確認した後、アクセス トークンが $params にない場合に設定されるため、アクセス トークンを送信する必要がないことに気付きました。
- SDK の makeRequest() メソッドに行き、curl_exec から false を返します。