2010-11-18 55 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

相关问题