2012-11-18 20 views
8

私は、Facebookへのサーバー側のログインをhereから作成する例を試してみたいと思いますが、運はありません。ステップ7では、私はトークンを使用して、コードを交換し、後で使用するためのセッションに保管しようとすると、私はいつもこのエラーが出る:Facebookログインエラー:ストリームを開けませんでした:HTTP要求に失敗しました! HTTP/1.0 400 Bad Request

file_get_contents(): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request 

私は、これはすでに何度も尋ねたが、これに私はまだできない知っていますthis questionのように、これを解決するには、私はcURLを使ってみましたが、それでも動作しません、それはちょうどfalseを返しました。

Other question私はPHP SDKを使用するように言われましたが、どのメソッドを使用するかわかりません。だから私はここで完全に迷っている。

がLOGIN_URLは次のように定義されて
<a href="<?php echo LOGIN_URL; ?> ?>" class="btn btn-primary">Login with Facebook</a> 

$app->get("/fb_login", function() use($app, $facebook) 
{ 
    $code = $_REQUEST["code"]; 

    $token_url = "https://graph.facebook.com/oauth/access_token?" 
     . "client_id=" . APP_ID . "&redirect_uri=" . APP_URL . $_SESSION["request_uri"] // Previous URL 
     . "&client_secret=" . APP_SECRET . "&code=" . $code; 

    $response = file_get_contents($token_url); // Doesn't work 
    $params = null; 
    parse_str($response, $params); 

    $_SESSION["access_token"] = $params["access_token"]; 

    // Let's try with cURL... 
    // $ch = curl_init(); 
    // curl_setopt($ch, CURLOPT_URL, $token_url); 
    // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    // $output = curl_exec($ch); // Returns false 
    // curl_close($ch); 

    $graph_url = "https://graph.facebook.com/me?access_token=" 
     . $params["access_token"]; 

    $user = json_decode(file_get_contents($graph_url)); 
    echo("Hello " . $user->name); 

    var_dump($code); die(); 
}); 
:fb_loginで

define("LOGIN_URL", $facebook->getLoginUrl(array("redirect_uri" => APP_URL . "fb_login"))); 

、私はこのコードを持っている


はここでログインフォームを呼び出すための私のコードです

助けていただければ幸いです。前にありがとう。

+0

'$ token_url'の完全な値を貼り付けて、すべての異なる変数を追加した後で変数の最終値を確認できますか? –

+2

_Any_あなた自身のデバッグ努力...? – CBroe

+0

私は同じ問題を抱えています –

答えて

6

からダウンロードしてください。質問に直接答えるには、urlencode(URLの転送に安全)でリダイレクトURLを使用しない可能性が最も高いです。最速の修正は次のようになります。

$token_url = "https://graph.facebook.com/oauth/access_token?" 
    . "client_id=" . APP_ID . "&redirect_uri=" . urlencode(APP_URL . $_SESSION["request_uri"]) 
    . "&client_secret=" . APP_SECRET . "&code=" . $code; 

しかし、私はまた、これがあなたのために、このすべてがそうであるように、あなたがFacebookのSDKを見ていることを示唆しています。

2

はあなたがPHP SDKのドキュメントを確認しました...そのかなり広範かつ素敵な..あなただけの

$facebook = new Facebook(array(
       'appId' => 'your app id', 
       'secret'=> 'your app secret')); 

を次のようにあなたが

としてログインURLを取得することができ、自分のFacebook SDKをセットアップする必要があります
$loginURL = $facebook->loginUrl(array(
       'scope' => 'read_stream', 
       'redirect_uri' => 'http://yourdomain/path/to/page')); 

さらに、SDKは、アプリの設定やアプリIDや秘密のエラーのリダイレクトURIの不一致や完全に異なることが原因で発生する可能性のあるエラーについてより詳しく説明します。 SDKをhereから

関連する問題