2010-04-30 13 views
5

जब कोई उपयोगकर्ता मेरी साइट पर जाता है जिसमें पहली बार एक फेसबुक ऐप होता है, तो उसे उसे अनुमति देने की आवश्यकता होती है और उसे ऐसा करने के लिए प्रेरित किया जाता है, तो मुझे वह कोड मिलता है जिसे मैं access_token में परिवर्तित कर सकता हूं। अब तक सब ठीक है।फेसबुक access_token: उपयोगकर्ता ने अपना ऐप स्वीकार करने के बाद इसे कैसे प्राप्त किया?

लेकिन उपयोगकर्ता द्वारा साइट पर आने के बाद मैं टोकन कैसे प्राप्त करूं? जब तक यह टोकन पहली बार सक्रिय होता है सब कुछ ठीक है। लेकिन जब उपयोगकर्ता ने एक हफ्ते पहले ऐप को पहले से ही अनुमति दी थी और केवल मेरे पृष्ठ पर जा रहा है तो मैं एक और टोकन कैसे प्राप्त करूं?

+0

क्या आप इसे किसी विशेष भाषा में ढूंढ रहे हैं? – Steve

उत्तर

0

मैं उपयोगकर्ता के कंप्यूटर पर access_token को संग्रहीत करने के लिए कुकी विधि का उपयोग करता हूं।

private $cookieSupport = true; 

या का उपयोग get_facebook_cookie समारोह यहां पाया: Single sign-on with the JavaScript SDK

ACCESS_TOKEN बाद वह एक कुकी में संग्रहीत किया जाता

FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true}); 

अपने facebook.php फ़ाइल में आप सत्य पर cookieSupport तो निर्धारित करने की आवश्यकता की अवधि के साथ "fbs_APPID" (कहा जाता है)। आप कुकी कुछ घंटों तो अधिक समय तक चाहते हैं आप विस्तारित अनुमति 'offline_access' पूछना चाहिए:

किसी भी समय उपयोगकर्ता की ओर से अधिकृत अनुरोध पर कार्रवाई करने के लिए अपने आवेदन सक्षम बनाता है। डिफ़ॉल्ट रूप से, अधिकांश एक्सेस टोकन एक अल्पकालिक अवधि के बाद समाप्त हो जाते हैं ताकि यह सुनिश्चित किया जा सके कि एप्लिकेशन सक्रिय रूप से एप्लिकेशन का उपयोग करते समय उपयोगकर्ता की तरफ से अनुरोध कर सकें। यह अनुमति लंबे समय तक हमारे ओथ एंडपॉइंट द्वारा लौटाई गई एक्सेस टोकन बनाती है।

+0

तो उपयोगकर्ता को पहचानने का एकमात्र तरीका कुकी में टोकन को सहेजना है? – hoktar

+0

यदि आप facebook.php के अंदर getSession() फ़ंक्शन का निरीक्षण करते हैं तो आप देखते हैं कि वे $ _GET या $ _COOKIE से सत्र बनाते हैं। – Jens

-2

php

session_start(); 
// Create our Application instance. 
$facebook = new Facebook(array(
       'appId' => FACEBOOK_APP_ID, 
       'secret' => FACEBOOK_APP_SECRET, 
       'cookie' => true, 
       'domain' => 'example.com' 

)); 

$session = $facebook->getSession(); 

$me = null; 
// Session based API call. 
if ($session) { 
    try { 
     $uid = $facebook->getUser(); 
     $me = $facebook->api('/me'); 
     $_SESSION['me'] = $me; 
     $_SESSION['uid'] = $uid; 
     $_SESSION['session'] = $session; 

    } catch (FacebookApiException $e) { 
     error_log($e); 
    } 
} 

का उपयोग कर आप $ _SESSION के माध्यम से ACCESS_TOKEN संदर्भित कर सकते हैं [ 'सत्र'] [ 'ACCESS_TOKEN'] अपने ऐप्लिकेशन के भीतर ,, fbdevtutorials.com

4
पर अधिक थेरेस ट्यूटोरियल से अधिक के लिए

अब फेसबुक Oauth2 पर माइग्रेट कर रहा है, जावास्क्रिप्ट द्वारा बनाई गई कुकी अलग है। मैं यह मेरे लिए काम करने के लिए मिला है और रेल के लिए FGraph प्लगइन का एक कांटा में जोड़ा - https://github.com/imme5150/fgraph

चाल में से एक आप कुकी में संग्रहीत "कोड" पैरामीटर से ACCESS_TOKEN अनुरोध करते हैं, आप के लिए है कि है "redirect_uri" में पास करें, लेकिन आप इसे रिक्त करना चाहते हैं।

3

क्लाइंट-साइड प्रवाह पर, आप उपयोगकर्ता को ओपेथ संवाद में स्कोप पैरामीटर में अनुमतियों के साथ रीडायरेक्ट कर सकते हैं। यदि उपयोगकर्ता ने पहले से ही आपकी ऐप और अनुमतियां स्वीकार कर ली हैं तो उसे यूआरआई खंड में access_token के साथ आपके "redirect_uri" पर रीडायरेक्ट किया जाएगा, अन्यथा आवश्यक अनुमतियां शीघ्र होंगी।

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream&response_type=token 

सर्वर साइड पर प्रवाह आप "कोड" तो आप OAuth समाप्ति बिंदु पर एक ACCESS_TOKEN के लिए यह भुना सकते हैं होना चाहिए:

https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&redirect_uri=YOUR_URLclient_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE 

प्रलेखन: https://developers.facebook.com/docs/authentication/

संबंधित मुद्दे