2010-07-21 18 views
5

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

जहां तक ​​मेरा बता सकते हैं जिंगा FBML का उपयोग करना चाहिए और सिर्फ यूआरएल कि तरह देखने के लिए अग्रेषण:

http://www.facebook.com/login.php?api_key=[api_key]&canvas=1&fbconnect=0&next=[return_url]

वहाँ वैसे भी एक अजगर एप्लिकेशन में ऐसा ही प्रभाव प्राप्त करने के लिए है कि एक आईफ्रेम में भार?

एक विधि here पता चलता है कि कैसे नए php SDK का उपयोग सही रीडायरेक्ट प्राप्त करने के लिए नहीं है, लेकिन मैं नए अजगर एसडीके जो एकमात्र तरीका है उपयोग करने के लिए कोशिश कर रहा हूँ:

def get_user_from_cookie(cookies, app_id, app_secret): 
""" 
Parses the cookie set by the official Facebook JavaScript SDK. 
cookies should be a dictionary-like object mapping cookie names to 
cookie values. 
... 
""" 

मैं कुछ काम कर रहे है कोड जावास्क्रिप्ट एसडीके और get_user_from_cookie विधि का उपयोग करता है:

<div id="fb-root"> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
</div> 

<script type="text/javascript"> 
FB.init({ apiKey: 'apikey', status: true, cookie: true, xfbml: true}); 

FB.Event.subscribe('auth.login', function(response) { 
    // Reload the application in the logged-in state 
    window.top.location = 'http://apps.facebook.com/myapp/'; 
}); 
</script> 
<fb:login-button>Install MyApp</fb:login-button> 

इस विधि के साथ समस्या यह है कि यह एक बटन क्लिक करने के लिए लॉग इन करने के लिए और फिर पॉपअप प्रमाणीकरण स्क्रीन के माध्यम से काम उपयोगकर्ता की आवश्यकता है। (नोट: यदि मैं सीधे FB.login को कॉल करता हूं तो एक पॉपअप भी होता है)

तो ... क्या जावास्क्रिप्ट एसडीके का उपयोग पॉपअप के रूप में लोड करने के बजाय लॉगिन पेज पर रीडायरेक्ट करने का कोई तरीका है?

किसी भी मदद के लिए धन्यवाद! - एरिक

उत्तर

0

आपको दस्तावेज में वर्णित ओएथ का उपयोग authentication within Canvas Applications के बारे में करना चाहिए।

आपके द्वारा पहले से उपयोग किए जाने वाले पायथन एसडीके में example है जो आपको लगभग बॉक्स के बाहर उपयोग करने के लिए तैयार होना चाहिए।

13

वहाँ जावास्क्रिप्ट SDK का उपयोग करने के लिए एक पॉपअप के रूप में यह लोड हो रहा है के बजाय प्रवेश पृष्ठ पर रीडायरेक्ट करने के लिए कोई तरीका है?

नहीं। जावास्क्रिप्ट एसडीके वर्तमान विंडो को रीडायरेक्ट करने के बजाय एक नई विंडो खुल जाएगा।

उपयोगकर्ता को प्राधिकरण संवाद के पूर्ण-स्क्रीन संस्करण के साथ प्रस्तुत करने के लिए, आपको उन्हें https://graph.facebook.com/oauth/authorize?client_id={{ application_id }}&redirect_uri={{ redirect_uri }} पर रीडायरेक्ट करने की आवश्यकता है। ध्यान दें कि आप इसे सर्वर-साइड कोड से नहीं कर सकते हैं, क्योंकि यह केवल आईफ्रेम को रीडायरेक्ट करेगा और फेसबुक इसे अनुमति नहीं देगा। आपको एक मध्यवर्ती दस्तावेज़ की आवश्यकता होगी जो मूल विंडो को रीडायरेक्ट करता है।

<!DOCTYPE html> 

<!-- 
This document redirects the parent window to the authorization 
dialog automatically, or falls back to a link if the client does not 
support JavaScript. 
--> 

<html> 
    <head> 
    <script type="text/javascript"> 
     window.parent.location = 'https://graph.facebook.com/oauth/authorize?client_id={{ application_id }}&redirect_uri={{ redirect_uri }}'; 
    </script> 
    </head> 

    <body> 
    You must <a target="_top" href="https://graph.facebook.com/oauth/authorize?client_id={{ application_id }}&redirect_uri={{ redirect_uri }}">authorize this application</a> in order to proceed. 
    </body> 
</html> 

एक बार जब उपयोगकर्ता अपने आवेदन अधिकृत किया है, वह या वह यूआरआई आप redirect_uri में निर्दिष्ट और फेसबुक स्वादिष्ट जानकारी के सभी प्रकार के साथ प्राप्त पैरामीटर signed_request पॉप्युलेट (the documentation on signed requests देखें) करेगा कि आप उपयोग कर सकते हैं करने के लिए पुनः निर्देशित किया जाएगा उपयोगकर्ता की ओर से फेसबुक पर अनुरोध करने के लिए।

ध्यान दें कि यदि आप कैनवास एप्लिकेशन में कुकी पर इस हस्ताक्षरित अनुरोध (या कुछ और) को सहेजने की योजना बना रहे हैं, तो आपको अपने शीर्षकों में कॉम्पैक्ट पी 3 पी नीतियां सेट करने की आवश्यकता है; अन्यथा, इंटरनेट एक्सप्लोरर के सभी संस्करण आपकी कुकीज़ को अनदेखा कर देंगे।

P3P: CP="IDC CURa ADMa OUR IND PHY ONL COM STA"

मैं एक पुस्तकालय यह वास्तव में आसान Django, जो आप के लिए इन सब बातों का ख्याल रखता है के द्वारा संचालित फेसबुक कैनवास एप्लिकेशन बनाने के लिए करता है कि लिखा है। इसे Fandjango कहा जाता है, और यह गीथब पर उपलब्ध है।

+1

आप उन्हें जावास्क्रिप्ट – BeRecursive

+0

@beRecursive में शीर्ष स्थान का उपयोग करके प्राधिकरण पृष्ठ पर रीडायरेक्ट कर सकते हैं: हाँ। यही वही है जो मैं कह रहा हूं। –

+0

क्यों उस पृष्ठ पर रीडायरेक्ट करें जिसमें उस कोड को कोड है जब आप इसे पृष्ठ में इंजेक्ट करते हैं? – BeRecursive

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