8

पर सहायता की आवश्यकता है मैं PHP का उपयोग कर एक फेसबुक एप्लिकेशन (apps.facebook.com/some_app) विकसित करने की कोशिश कर रहा हूं जहां मुझे उपयोगकर्ता के संगीत हितों के आधार पर कुछ जानकारी प्रस्तुत करने की आवश्यकता है। मैंने पाया कि यह "user_likes> गेम" के अंतर्गत है। मैं OAuth संवाद विधि को लागू किया है के रूप में मेरी सूचकांक पृष्ठ में एपीआई में सुझाव दियाOAuthException Code 2500

  • पहुँच प्राप्त करने के लिए,:

    मेरे समस्याओं इस प्रकार हैं।


$auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 
      . $app_id . "&redirect_uri=" 
      . urlencode($canvas_page) 
      ."&scope=user_likes"; 
  • सफल प्राधिकरण बाद मैं "कोड" पैरामीटर के रूप में के साथ सूचकांक पृष्ठ पर वापस आते हैं।

http://MY_CANVAS_PAGE/?code=some base64 encoded letters 
  • सबसे पहले मैं अगर मैं सिर्फ ACCESS_TOKEN जरूरत है उपयोगकर्ता के संगीत हितों को पढ़ने के लिए पता नहीं है, लेकिन मैं कोशिश की है सभी तरीकों का सुझाव दिया। मैं इस बिंदु से आगे नहीं बढ़ सका
  • मेरे पास ऐसा कोड है (मेरे इंडेक्स पेज में), जो कोड पैरामीटर सेट नहीं होने पर प्राधिकरण के लिए रीडायरेक्ट करता है।

if(empty($code) && !isset($_REQUEST['error'])) { 
    $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection 
    echo("<script> top.location.href='" . $auth_url . "'</script>"); 
} 
  • वर्तमान में मैं सिर्फ यहाँ लेकिन कोई सफलता के साथ उपयोगकर्ता की सार्वजनिक जानकारी पाने के लिए कोशिश कर रहा हूँ। मैं signed_request पद्धति के रूप में सुझाव की कोशिश की है, लेकिन कोई सफलता

$signed_request = $_REQUEST["signed_request"]; 
list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 
echo ("Welcome User: " . $data["user_id"]); 
  • इसके अलावा कोड http://developers.facebook.com/blog/post/500/

    में पाया की कोशिश की लेकिन जब डिबग प्राप्त करने की कोशिश मैं त्रुटि हो रही है

012 का उपयोग कर जानकारी
print_r($decoded_response); 

stdClass Object ([error] => stdClass Object ([message] => An active 
access token must be used to query information about the current user. 
[type] => OAuthException [code] => 2500)) 

उपयोगकर्ता के सार्वजनिक जानकारी प्राप्त करने के लिए, मैं भी पीएचपी एसडीके


$facebook = new Facebook(array(
'appId' => MY_APP_ID, //registered facebook APP ID 
'secret' => MY_SECRET, //secret key for APP 
)); 

$fb_user = $facebook->getUser(); 

if($fb_user){ 
    try { 
     $user_profile = $facebook->api('/me'); 
     echo $user_profile['email']; 
    } 
    catch(FacebookApiException $e) { 
     $fb_user = null; 
    } 
} 

लेकिन कोई सफलता में सुझाव दिया उदाहरण की कोशिश की है। क्या कोई मुझे बता सकता है कि मुझे यह त्रुटि क्यों मिल रही है और उपयोगकर्ता के संगीत ब्याज को सही तरीके से कैसे पहुंचाया जा सकता है। शायद मैं एपीआई गलत समझा।

धन्यवाद

दीपक

+0

आप एक समाधान मिला

नतीजा यह है कि मैं https://developers.facebook.com/docs/authentication/server-side/ से कोड का इस्तेमाल किया और लाइन बदल दिया गया था? मुझे यह त्रुटि https://graph.facebook.com/me url पर भी मिलती है। क्या मुझे यह मेरी फेसबुक सूचनाएं वापस नहीं करनी चाहिए? – Kemal

उत्तर

0

इस कोड

$code = $_REQUEST["code"]; 
    if(empty($code)) { 
    $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" 
    . $app_id . "&redirect_uri=" . urlencode($my_url) ; 
    echo("<script>top.location.href='" . $dialog_url . "'</script>"); 
    } 

    $token_url = "https://graph.facebook.com/oauth/access_token?client_id=" 
    . $app_id . "&redirect_uri=" . urlencode($my_url) 
    . "&client_secret=" . $app_secret 
    . "&code=" . $code; 
    $response = file_get_contents($token_url); 
    $params = null; 
    parse_str($response, $params); 
    $access_token = $params['access_token']; 

पुनश्च प्रयास करें: उपयोगकर्ता का ईमेल पता एक सार्वजनिक जानकारी & आप user_email अनुमति की जरूरत यह

+0

लेकिन मैं आपको PHP-sdk का उपयोग करने की दृढ़ता से अनुशंसा करता हूं। –

+0

जो फेसबुक ब्लॉग लिंक में बहुत अधिक कोड है, मैंने ऊपर पोस्ट किया है http://developers.facebook.com/blog/post/500/। मैंने पहले ही कोशिश की है। उपरोक्त कोड के साथ, यदि मैं $ access_token गूंजने का प्रयास करता हूं, तो कुछ भी मुद्रित नहीं होता है। बस खाली – Laraveldeep

+0

डीबगिंग उद्देश्य के लिए मैंने $ प्रतिक्रिया या print_r ($ प्रतिक्रिया) गूंजने की कोशिश की है लेकिन कुछ भी नहीं मिला है। पता नहीं क्यों मुझे शून्य/खाली प्रतिक्रिया मिल रही है। मुझे लगता है कि चीजें वहां से गलत हो गईं। धन्यवाद – Laraveldeep

9

त्रुटि 2500 का मतलब के लिए आपके पास नहीं है कोई एक्सेस टोकन या ऐप एक्सेस टोकन नहीं है लेकिन /me/ तक पहुंचने का प्रयास कर रहा है - 'मैं' वर्तमान उपयोगकर्ता ओ के लिए प्लेसहोल्डर है आर पेज आईडी 'तो उपयोगकर्ता या पेज के लिए एक्सेस टोकन के बिना मान्य नहीं होगा।

पसंद के उपयोगकर्ता की सूची पर पहुंचने के लिए उन्हें को अधिकृत आप भी user_likesPermission की आवश्यकता होगी

सबसे अधिक संभावना का कारण बनता है मैं क्षुधा नहीं पहुँच टोकन के code का आदान-प्रदान करने में सक्षम होने के लिए देखा है कर रहे हैं:

  1. redirect_uri आप इस्तेमाल किया एक फ़ोल्डर या सर्वर मार्ग पर है और स्लैश याद आ रही है
  2. (यानी यह http://www.example.comhttp://www.example.com/ के बजाय है) 210 आप प्रमाणन संवाद करने के लिए पहली कॉल में इस्तेमाल ठीक एक ही रूप में redirect_uri आप अपने प्रमाणन प्रवाह किसी अन्य कारण से और आप के लिए टूट जाता है, तो एक ACCESS_TOKEN

के लिए कोड exchagne करने के लिए कॉल में उपयोग नहीं किया था इसे एसडीके उदाहरणों या Authentication दस्तावेज से नहीं समझ सकता है, इसमें किसी के लिए आपसे बात करने में कुछ समय लग सकता है क्योंकि आप अपने उत्तरों को समझने के लिए आवश्यक कुछ पृष्ठभूमि ज्ञान खो सकते हैं

0

मैंने अपनी समस्या हल कर दी है धन्यवाद https://developers.facebook.com/blog/post/534/

मैंने अभी नमूना कॉपी किया है और चिपकाया है मेरी लिपि यह पूरी तरह से फिट बैठता है। यह PHP और जावास्क्रिप्ट का संकर उपयोग है।

+0

मुझे $ क्या परिवर्तनीय है? आपके द्वारा सूचीबद्ध उदाहरण में या कोड – Igy

+0

में इस तरह के एक चर नहीं है मैंने 2 साल पहले अपनी परियोजना को कोड किया है और उन बार फेसबुक ' '$ user_id = $ facebook-> getUser() पर वर्तमान '$ user_id' की बजाय $ me' variable;' तो' $ me' वह '$ me' है। लेकिन आप सही हैं, कोई '$ me' नहीं है पेज पर क्षमा करें, मैंने इसे हटा दिया है। – Kemal

1

मेरे लिए, मैं php के साथ एक ऑथ टोकन प्राप्त करने का प्रयास कर रहा था और पाया कि 2500 त्रुटि file_get_contents के साथ किसी भी समस्या को वापस नहीं करने के कारण हुई थी। मैं अपने ब्राउज़र में यूआरएल तक पहुंच सकता था, लेकिन file_get_contents का उपयोग करके नहीं। मैंने इसे वर्णित अनुसार कर्ल का उपयोग करके इसे ठीक किया है: https://stackoverflow.com/a/6325313

$response = file_get_contents($token_url); 

$ch = curl_init($token_url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($ch); 

साथ इसलिए यह बन गया:

$token_url = "https://graph.facebook.com/oauth/access_token?client_id=" 
     . $app_id . "&redirect_uri=" . urlencode($redirect_url) 
     . "&client_secret=" . $app_secret 
     . "&code=" . $code; 

    /* Facebook say to use this, but file_get_contents isn't working! 
    $response = file_get_contents($token_url,null, $val); 
    */ 

    // Use this as an alternative 
    $ch = curl_init($token_url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $response = curl_exec($ch); 

    // From https://developers.facebook.com/docs/authentication/server-side/ 
    $params = null; 
    parse_str($response, $params); 
    $access_token = $params['access_token']; 
संबंधित मुद्दे