2010-11-18 8 views
5

मैंने पहले फेसबुक में अनुमति संवाद दिखाने के लिए पुरानी बाकी एपीआई का उपयोग किया था। अब, नए ग्राफ एपीआई के साथ, मैं क्या कर सकता हूं? (मैं आईफ्रेम ऐप्स में हूं)।नए ग्राफ एपीआई का उपयोग कर एफबी में विस्तारित अनुमति संवाद कैसे दिखाएं?

मुझे पता है कि मैं धोखा और एक अलग विंडो में अनुमति पॉपअप कर सकते हैं:

FB.login(function(response) { 
        if (response.session) { 
        if (response.perms) { 
         // user is logged in and granted some permissions. 
         // perms is a comma separated list of granted permissions 
        } else { 
         // user is logged in, but did not grant any permissions 
        } 
        } else { 
        // user is not logged in 
        } 
       }, {perms:'offline_access'}); 

कि .. FB.login फिर से फोन की तरह (कहते हैं कि मैं लोगों को एक अलग बटन और ट्रिगर पर क्लिक करना चाहते हैं विस्तारित परमिटिस संवाद)

हालांकि, यह बदसूरत लग रहा है, और यह एक संवाद की तरह नहीं दिखता है।

क्या संवाद उत्पन्न करने का कोई तरीका है? मैं यह पता लगाने की कोशिश करता हूं कि एफबी.ईई मदद कर सकता है लेकिन इसके बारे में केवल थोड़ी सी जानकारी है।

इसके अलावा, मुझे नहीं लगता कि 'प्रतिक्रिया' कॉलबैक कभी निष्पादित होता है। न तो मैं "अनुमति न दें" या "अनुमति दें" पर क्लिक करता हूं, किसी भी कॉल को ट्रिगर नहीं करेगा। कोई उपाय?

hihih.. कोई मेरी मदद कर सकता है?

उत्तर

21

अंत में। किसी अन्य वेबसाइट से समाधान का पता लगाएं। पहले । FB.init के बाद (...); ऐसा: फिर

FB.provide("UIServer.Methods", 
    { 'permissions.request' : { size : {width: 575, height: 300}, 
    url: 'connect/uiserver.php', 
    transform : FB.UIServer.genericTransform } 
    }); 

, जब भी आप permssion संवाद कॉल करने के लिए की जरूरत है, कि कार्य करें:

FB.ui({method: "permissions.request", "perms": 'email,offline_access'}, 
    callBack); 

यह मेरे इतने लंबे समय के अमेरिकन प्लान वस्तु को देखकर यह पता लगाने की ले लिया और वहाँ है पता लगाना UIServer अनुमतियों के साथ। अनुरोध तब से, मैं खोज रहा हूं और इस समाधान को ढूंढता हूं। और एफबी.ईई इसके बारे में कुछ भी नहीं बोलता .. और एफबी.प्रोवाइड दस्तावेज नहीं है। धन्यवाद फेसबुक।

+1

धन्यवाद एक टन !!! फेसबुक को अपने नए एपीआई के बेहतर दस्तावेज़ीकरण की ज़रूरत है। – Nixarn

+0

इस लेखन के अनुसार, ऊपर वर्णित एफबी.प्रोवाइड() + एफबी.ईई() कुछ भी नहीं करता है - जो आश्चर्यजनक नहीं है क्योंकि यह अनियंत्रित सुविधाओं का लाभ उठाता है। – ObscureRobot

+0

फेसबुक की कई विशेषताएं अनियंत्रित हैं। एसओ के लिए भगवान का शुक्र है। – Frans

3

इसके लिए आपको जावास्क्रिप्ट या किसी भी एसडीके का उपयोग करने की आवश्यकता नहीं है हालांकि यह इसे आसान बना देगा। आप केवल इस तरह एक यूआरएल के लिए उपयोगकर्ता रीडायरेक्ट करना होगा:

https://graph.facebook.com/oauth/authorize? 
    client_id=...& 
    redirect_uri=http://www.example.com/callback& 
    scope=user_photos,user_videos,publish_stream 

तुम हमेशा javascript या लिंक के साथ शीर्ष विंडो के लिए उपयोगकर्ता रीडायरेक्ट करना चाहिए।

window.top.location = <login_url> or <a href=<login_url> target="_top">Login</a> 

आप PHP एसडीके या सी # SDK का उपयोग कर रहे हैं आप एसडीके आप के लिए यूआरएल उत्पन्न हो सकता था, लेकिन इस प्रक्रिया में एक ही है।

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

  1. उपयोगकर्ता क्लिक के लिए लॉग इन
  2. उपयोगकर्ता फेसबुक प्रवेश पृष्ठ पर चला जाता है
  3. उपयोगकर्ता क्लिक करता है
  4. फेसबुक http://apps.facebook.com/myapp/loggedin
को http://www.example.com/callback
  • करने के लिए उपयोगकर्ता आपका एप्लिकेशन को उपयोगकर्ता पुनर्निर्देश पुनर्निर्देश की अनुमति देते हैं
  • +0

    मुझे लिंक और PHP के बारे में पता है। लेकिन मेरी आवश्यकता जेएस का उपयोग करना है, और इसे एफबीएमएल संवाद के समान दिखाना है। उत्तर के लिए धन्यवाद। :) – murvinlai

    +1

    फेसबुक कैनवास ऐप्स का उपयोग करते समय भी रीडायरेक्टिंग काम नहीं करता है। –

    1

    उत्तर में से एक उत्तर एक हैक सुझाता है जिसमें आप FB.provide() पर कॉल करते हैं और फिर FB.ui() विस्तारित अनुमति संवाद पॉप अप करने के लिए कहते हैं। वह समाधान मेरे लिए काम नहीं करता है, लेकिन अब एक दस्तावेज समाधान है जो करता है। आपको आवश्यक अनुमतियां प्राप्त करने के लिए Just call FB.login()

    FB.login(function(response){ 
        if (response.authResponse) { 
         alert('success!'); 
        } else { 
         alert('fail!'); 
        } 
        },{scope: 'email'}); 
    

    इससे भी बेहतर, आप ask for extended permissions with the login button कर सकते हैं।

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