2012-11-18 37 views
8

मैं here से फेसबुक पर सर्वर साइड लॉगिन बनाने के लिए उदाहरण का पालन करने का प्रयास कर रहा हूं, लेकिन बिना किसी किस्मत के।फेसबुक लॉगिन त्रुटि: स्ट्रीम खोलने में विफल: HTTP अनुरोध विफल! HTTP/1.0 400 खराब अनुरोध

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

मैं जानता हूँ कि यह पहले से ही कई बार पूछा अभी भी करने में असमर्थ है, लेकिन मैं: चरण 7 में, जब मैं एक टोकन के माध्यम से कोड का आदान-प्रदान और बाद में उपयोग के लिए एक सत्र में संग्रहीत करने का प्रयास करें, मैं हमेशा इस त्रुटि मिलती है इसे हल करें, this question के अनुसार, मैंने curl का उपयोग करने का प्रयास किया, लेकिन यह अभी भी काम नहीं करता है, यह सिर्फ झूठा लौटा।

Other question ने मुझे PHP एसडीके का उपयोग करने के लिए कहा, लेकिन मुझे नहीं पता कि किस विधि का उपयोग करना है। तो मैं यहाँ पूरी तरह से खो गया हूँ।

<a href="<?php echo LOGIN_URL; ?> ?>" class="btn btn-primary">Login with Facebook</a> 

जहां LOGIN_URL के रूप में परिभाषित किया गया है:

$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(); 
}); 
:

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

, मैं इस कोड है


यहां लॉग इन करें प्रपत्र फोन करने के लिए मेरा कोड यह है

किसी भी मदद की सराहना की है। पहेले धन्यवाद दें।

+0

क्या आप '$ token_url' का पूरा मूल्य पेस्ट कर सकते हैं ताकि हम सभी अलग-अलग चर जोड़ने के बाद चर के अंतिम मान को देख सकें? –

+2

_Any_ अपने स्वयं के डीबगिंग प्रयास ...? – CBroe

+0

मुझे एक ही समस्या है –

उत्तर

6

से एसडीके डाउनलोड करें सीधे सवाल का जवाब देने के लिए, समस्या यह है कि आप रीडायरेक्ट यूआरएल urlencode (यूआरएल ट्रांसपोर्ट के लिए सुरक्षित) नहीं करते हैं। सबसे तेजी से ठीक हो जाएगा:

$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; 

हालांकि, मैं भी है कि आप फेसबुक एसडीके को देखो यह सब आप के लिए यह करता है के रूप में सुझाव है।

2

आप निम्नलिखित

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

तो फिर तुम

के रूप में प्रवेश URL प्राप्त कर सकते हैं के रूप में पीएचपी एसडीके ... इसका काफी व्यापक और अच्छा .. तुम बस सेटअप की जरूरत है अपने फेसबुक एसडीके पर दस्तावेज़ीकरण की जाँच की है
$loginURL = $facebook->loginUrl(array(
       'scope' => 'read_stream', 
       'redirect_uri' => 'http://yourdomain/path/to/page')); 

और इसके अलावा, एसडीके आपको अपनी त्रुटि के बारे में बेहतर विवरण दे सकता है जो इसे नियंत्रित करता है जो ऐप की कॉन्फ़िगरेशन या ऐप आईडी या गुप्त या पूरी तरह से अलग चीज़ में त्रुटि के साथ रीडायरेक्ट यूआरआई में मेल नहीं खा सकता है। here