2012-04-16 152 views
0

爲了做到這一點,我遵循了Facebook開發者教程,無濟於事。頁面標籤頁中的oauth facebook

基本上我需要用戶從頁面選項卡授權我的應用程序。

我已經用他們推薦的JavaScript重定向頁面加載用戶將其重定向到OAuth的彈出然而,當應用程序加載時我只得到了可怕的「對不起,發生了錯誤」

所生成的網址是「https://www.facebook.com/dialog/oauth/?client_id=247274355370447 & redirect_uri = https%3A%2F%2Fwww.facebook.com%2Fpages%2Fnull%2F286793781401206%2F247274355370447 & scope = email,user_about_me」so I可以看到我的變量page_id和app_id都被傳入。

這是我的完整JS代碼

<script> 
var oauth_url = 'https://www.facebook.com/dialog/oauth/'; 
oauth_url += '?client_id=<? echo $app_id;?>'; 
oauth_url += '&redirect_uri=' +  encodeURIComponent('https://www.facebook.com/pages/null/<?php echo $page_id;?>/<?php echo $app_id;?>'); 
oauth_url += '&scope=email,user_about_me' 
window.top.location = oauth_url; 
</script> 

回答

1

我建議使用如果您希望用戶在授權後仍保留在頁面選項卡上,則使用FB.login()函數。您可以使用此代碼這樣做:

FB.login(function(response) { 
    if (response.authResponse) { 
     // do something with newly authorized user 
    } else { 
     console.log('User cancelled login or did not fully authorize.'); 
    } 
}, {scope:'PERMISSION_1', 'PERMISSION_2'}); 

它將在iframe打開對話框,並引發回調他們已經提交或取消授權後。

此解決方案使用JavaScript SDK。

+0

Hi @ jason-decamp,我一直在嘗試按照標準代碼示例使用FB Javascript SDK。你的FB.login代碼通常會創建一個彈出的oauth對話框,大多數瀏覽器都會阻止它,除非它被按鈕觸發。我希望能夠自動爲未登錄的用戶調用FB.login,並在iframe中打開對話框。你是做什麼? – 2012-08-15 15:28:41

0

我認爲這可能是因爲你試圖將它們重定向回facebook.com,所以它沒有看到這是你的應用程序的有效url。您需要重定向到您自己網站上的頁面,然後如果需要將它們從那裏重定向到實際的Facebook頁面應用程序選項卡

2

我遇到同樣的問題。

你應該可以做到這一點。

在用戶單擊對話框中的按鈕後重定向到的URL。您指定的網址必須是具有與您應用設置中指定的相同基本域的網址,格式爲hxxps://apps.facebook.com/YOUR_APP_NAMESPACE的網頁網址或格式爲hxxps://的網頁標籤網址www.facebook.com/PAGE_USERNAME/app_YOUR_APP_ID

這對我不起作用。我仍然得到錯誤說redirect_uri不屬於用戶。

我寧願不必在我的網站上添加一個頁面,將它們重定向回該網站,但它似乎是正確的方式不起作用。

我目前發現的最簡單的修復方法是將redirect_uri設置回我的域中的頁面。從page_tab內容加載相同的域。

例如我的頁面標籤加載hxxp://example.com/所以設置REDIRECT_URI到hxxp://example.com/redirect.php

在redirect.php使用如下代碼

<script> 
window.top.location = "{YOUR_FACEBOOK_PAGE_TAB_URL}"; 
</script> 
+0

這樣的工作,但它是一種愚蠢的做事方式....我剛剛看到你的用戶名。這是唯一對我有用的東西。 – 2012-08-16 20:13:46