2010-06-29 85 views
1

我試圖從舊的JavaScript庫(我在使用Connect的地方)切換到新的Facebook JavaScript SDK,我無法獲得權限對話框。我試圖獲取「數據權限」部分here下顯示的權限對話框。如何在新的Facebook JavaScript SDK中請求權限?

我的老電話是這(用適當的初始化):

FB.Connect.showPermissionDialog('publish_stream'); 

我試圖改變這(再次,進行適當的初始化),但它不工作,它運行沒有錯誤,但回調永遠不會運行:

FB.login(function(response) 
{ 
    if (response.session) 
    { 
     if (response.perms) 
     { 
      alert('user is logged in and granted some permissions: ' + response.perms); 
     } 
     else 
     { 
      alert('logged in but didnt grant permissions'); 
     } 
    } 
    else 
    { 
     alert('not logged in'); 
    } 
}, 
{perms:'publish_stream'}); 

這是我使用的初始化代碼:

window.fbAsyncInit = function() 
{ 
    FB.init({appId: 'xxxxxxxx', status: true, cookie: true, xfbml: true}); 
}; 
(function() 
{ 
    var e = document.createElement('script'); 
    e.async = true; 
    e.src = document.location.protocol + 
     '//connect.facebook.net/en_US/all.js'; 
    document.getElementById('fb-root').appendChild(e); 
}()); 
+0

通過運行沒有錯誤,你的意思是權限對話框出現?在FB初始化後,你確定觸發了這個Login方法嗎?嘗試從應用程序首選項中刪除應用程序,一旦授予它們權限就會被緩存。 – serg 2010-06-29 16:57:04

+0

它不會拋出任何錯誤,它會運行但不執行任何操作(不提示)。嘗試清除瀏覽器緩存並刪除並重新添加應用程序,但仍然沒有任何結果。 – 2010-06-29 20:38:16

+0

如何觸發它,在某個按鈕上或文檔加載?你發佈的這段代碼是正確的,所以問題在其他地方。也許發佈你的FB init方法和觸發登錄的方法。 – serg 2010-06-29 21:08:19

回答

1

經過很多修改代碼試圖讓這個工作,我終於找到了錯誤的地方。 JavaScript代碼需要放在HTML末尾,</body>標籤附近。我把它移到那裏,一切都奏效了!

+0

更新:OAuth2規範規定'燙髮'現在應該被稱爲'範圍' – 2013-01-19 15:57:43