2010-11-18 56 views
5

我用舊的休息api在Facebook上顯示權限對話框。 現在,有了新的圖形API,我該怎麼辦? (我在IFrame應用程序中)。如何使用新的Graph API在FB中顯示擴展權限對話框?

我知道我可以欺騙和在一個單獨的窗口中彈出的權限:

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(讓說,我希望人們點擊不同的按鈕和觸發擴展permisison對話框)

但是,它看起來很醜,它看起來不像一個對話框。

有沒有辦法生成對話框?我試圖找出FB.ui是否可以提供幫助,但只有很少的信息。

此外,我不認爲'響應'回調執行。我不點擊「不允許」或「允許」,不會觸發任何回撥。任何想法?

hihih..anyone能幫助我嗎?

回答

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

我花了這麼長時間看FB對象弄清楚,找出存在UIServer與permissions.request然後,我繼續搜索並找到這個解決方案。和FB.ui沒有談及它..和FB.provide沒有記錄。感謝facebook。

+1

謝謝! Facebook迫切需要更好地記錄他們的新API。 – Nixarn 2011-01-20 15:29:56

+0

在撰寫本文時,如上所述的FB.provide()+ FB.ui()什麼都不做 - 這並不令人意外,因爲它利用了未記錄的特性。 – ObscureRobot 2011-11-21 05:21:12

+0

Facebook的許多功能都沒有記錄。感謝上帝。 – Frans 2011-12-12 10:25:34

3

您不需要使用JavaScript或任何SDK,但它會使它更容易。您只需將用戶重定向到以下網址:

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或C#SDK,您可以讓sdk爲您生成url,但過程相同。

此外,不是說redirect_uri必須與iFrame應用程序的url位於同一個域中。這將導致Facebook將您的Facebook用戶以外的用戶重定向到您的網站,然後您應該將用戶重定向到facebook內的應用程序。例如:

  1. 用戶點擊登錄
  2. 用戶轉到Facebook登錄頁面
  3. 用戶點擊允許
  4. Facebook的用戶http://www.example.com/callback
  5. 您的應用程序將用戶重定向重定向到http://apps.facebook.com/myapp/loggedin
+0

我知道鏈接和PHP。但我的要求是使用JS,並使其看起來與FBML對話框相同。謝謝你的回覆。 :) – murvinlai 2010-11-18 09:11:00

+1

使用Facebook Canvas應用程序時,重定向也不起作用。 – 2011-10-24 19:55:15

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

相關問題