2012-04-15 27 views
0

我在php有一個音樂網站。我可以讓用戶通過Facebook進行身份驗證,並通過hybridauth庫登錄到我的網站。Facebook棄用離線訪問,任何方式?

現在我想要的是,每次用戶收聽歌曲時,我都會用歌曲鏈接更新他的狀態。 現在Facebook可以取消對離線訪問的支持嗎?或者這不需要離線訪問權限?

我是新來的Facebook的API。

回答

1

嗯,我並不完全瞭解你的情況,但是如果用戶在你想要在他的牆上發佈時使用你的應用程序,那麼你沒有任何問題,並且你不需要「offline_access 「或任何等效..

你可以簡單地加載javascript SDK頁面,這將確保該用戶進行身份驗證,並且您有一個有效的訪問令牌,因爲它的權威性文件Handling Invalid and Expired Access Tokens中說:

使用Javascript SDK實現驗證的桌面Web和移動Web應用程序

調用FB.getLoginStatus()或確保狀態:當你 調用FB.init()是指真正的設置上您的 應用程序的用戶的土地和被簽署成爲Facebook的下一個時,authResponse對象,你 因這些呼叫而被傳遞將包含新的有效的 訪問令牌。

在這種情況下,它僅僅是用戶使用您的應用程序 隱含生成新訪問令牌的行爲。


編輯

如果您使用服務器端驗證流程,或使用提供延長有效的訪問令牌的新端點的Facebook(你可以得到一個相當長壽命的訪問令牌(約60天)這是使用客戶端流程獲得的),如後Removal of offline_access Permission中所述。

如果這可以幫助你再細,但我建議你只要確保你的應用程序能夠處理令牌到期,因爲沒有什麼可以做,以完全避免這種情況。

怎麼樣?好吧,你有幾個選擇,你需要找到一個適合你的特定場景的選項,但是這裏有一個選項: 首先,就我所見,你必須在客戶端做事情,因爲當用戶正在聽一首歌曲令牌CA到期,而爲了得到從服務器端一個新的令牌,你必須刷新頁面,用戶發送到身份驗證對話框,將與他的使用體驗。

下面是一個使用js的SDK某些JS代碼,它不是完整的代碼,我不期望它的工作,但它應該給你的,你可以做些什麼的想法:

FB.Event.subscribe("auth.statusChange", function(response) { 
    if (response.status !== "connected") { 
     FB.login(function(response2) { 
      if (response2.authResponse) { 
       // you now have a valid access token, you can update your server side with an ajax request for example 
      } 
      else { 
       // user canceled login 
      } 
     }); 
    } 
}); 

而且,請注意,FB。登錄嘗試打開一個彈出窗口,因此它不應該像這樣調用,只能在用戶交互之後才能調用,因此,您應該將其替換爲向用戶顯示消息,例如「請單擊'確定'」能夠發佈到Facebook ...「,並點擊打開FB.login

當然,您還可以使用其他方法或您可以訂閱的其他方法,只需閱讀文檔並嘗試使用您的選項即可。

+0

用戶認證並在應用程序中。他在播放器中加載歌曲,我想通過php發佈該事件,而不是JavaScript。 – 2012-04-15 11:53:40

+0

您的應用程序中是否有播放器?當用戶在播放器中加載歌曲時,是否發生在您的應用程序中?如果是這樣,那麼你可以擁有js sdk,並且你可以獲得一個有效的訪問令牌(就像它在doc中所說的那樣)。然後你可以使用php,js,flash,java和erlang發佈它,只要你有一個有效的訪問令牌,它並不重要。 – 2012-04-15 12:05:08

+0

是的,我的應用程序在網絡中,玩家也在其中。 你能舉一個例子嗎? – 2012-04-15 12:14:59