0

我有一個使用Facebook登錄的網絡應用程序。我們希望在我們產品的個人資料頁面上爲這些用戶呈現Facebook「追蹤」按鈕。爲通過Facebook登錄認證的用戶呈現Facebook關注按鈕?

但是,當用戶在授權給我們的應用程序時,使用我們從圖形API獲取的配置文件URL對其進行初始化時,「後續」按鈕不會呈現。

我只能在按鈕中使用的URL是他們主要的Facebook帳戶URL(我可以手動定位但不是以編程方式定位)來使其工作。我們似乎無法通過圖表API或JavaScript SDK訪問此網址。

實施例的標記,我預期工作,使用中的「鏈接」邊緣給定的用戶圖形節點上的配置文件的URL(注意,這採用了應用範圍的用戶ID):

<div class="fb-follow" data-href="https://www.facebook.com/app_scoped_user_id/812839870448/" data-layout="button" data-show-faces="false"></div> 

實施例的標記的是實際工作使用非應用範圍的用戶名:

<div class="fb-follow" data-href="https://www.facebook.com/yetanotherjosh" data-layout="button" data-show-faces="false"></div> 

渲染後續按鈕誰已經驗證您的應用程序,用戶似乎是一個很簡單的任務,你有什麼我錯過了什麼?謝謝!

p.s. - 如果您想知道JS SDK是否沒有正確加載,我們通過代碼as suggested by the Facebook developer site將它加載到body標籤中(並且該按鈕可以與某些URL一起工作,所以我不認爲SDK設置是問題):

<script>(function(d, s, id) { 
var js, fjs = d.getElementsByTagName(s)[0]; 
if (d.getElementById(id)) return; 
js = d.createElement(s); js.id = id; 
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5&appId=REDACTED"; 
fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 
+0

建議您提交一份錯誤報告。 https://developers.facebook.com/bugs – CBroe

+0

好主意。我在這裏打開它。 https://developers.facebook.com/bugs/1730063670538459/ – Yetanotherjosh

回答

1

我想要做同樣的事情,我與PHP API同樣的問題。

從理論上講,你可以做以下的事情:

  1. 有一個PHP腳本按照https://www.facebook.com/1234鏈接到它的終點:https://www.facebook.com/username
  2. 第1步是很慢的,所以你應該這樣做只有一次,也許使用cron作業,而不是在用戶登錄時進行即時操作,然後將該url存儲在數據庫中。
  3. 使用存儲的url生成Follow按鈕。

對於第1步中您可以使用How to get final URL after following HTTP redirections in pure PHP?

但一定要添加一個用戶代理:

$request .= 'User-Agent: Safari/537.16\r\n'; 

或否則你會被重定向到/ unknownbrowser

我會如果有的話,親自嘗試併發布結果。

後來編輯:我試了一下,Facebook需要你登錄才能得到最終的url,所以你可以在理論上再次啓動一個登錄流程來訪問url,但它可能會矯枉過正。

+0

感謝您對此進行調查。好像我們運氣不好。我已經用FB打開了一個錯誤報告,我會暫時解決這個問題,以便迴應FB錯誤。如果事實證明這是一個不起眼的話,我會接受你的答案。歡呼 – Yetanotherjosh

+0

更新:FB響應我的錯誤報告,並將其作爲wontfix關閉 - 按鈕按鈕不適用於應用程序範圍的用戶ID設計。所以這是不可能的,除非他們決定支持它。 https://developers.facebook.com/bugs/1730063670538459/ – Yetanotherjosh