簡體   English   中英

無需登錄即可從Facebook圖形API檢索照片

[英]Retrieve photos from facebook graph api without login

我有一個PHP應用程序,我的注冊用戶登錄到Facebook。 我使用$facebook->getLogoutUrl(); 然后,我將所有的相冊重新整理,並在HTML select標簽中顯示其ID和名稱。 用戶選擇一個,專輯的ID存儲在DB中。

在這里一切都很好。

然后,一個匿名用戶訪問我的網站,我希望他看到我的注冊用戶照片(注冊用戶選擇的相冊的公開照片)(他們沒有登錄我的網站,也沒有登錄Facebook)。 目前,僅當匿名用戶登錄Facebook時,它才有效。 但是,即使匿名用戶未登錄Facebook,我也想顯示照片。

$photos = $facebook->api('/'.$idAlbum.'?fields=id,name,link,photos.fields(id,picture,source)');

我已經嘗試了2周,但似乎沒有任何效果。 我嘗試不登錄,嘗試使用應用訪問令牌,嘗試過:

https://graph.facebook.com/oauth/access_token?client_id=XXXXXX&client_secret=YYYYYY&grant_type=client_credentials

誰能幫我? 或告訴我我的應用程序是否無法從相冊中刪除照片。 我搜索了一種登錄應用程序的方法,但僅找到應用程序訪問令牌( https://developers.facebook.com/docs/howtos/login/login-as-app/ ),但它說它it can make requests as the app, not as a user

為了訪問用戶信息,您將需要該用戶的有效訪問令牌。 應用程序訪問令牌不能用於代表用戶執行任何操作。

訪問令牌會在一段時間后過期,這會阻止應用程序在用戶未實際使用應用程序時搜索用戶信息。

如果您想一路走-只需下載相冊中的所有照片並將它們存儲在服務器上...如果您不能這樣做,則必須考慮擴展相冊所有者的訪問令牌,以便您可以在查詢他們的相冊時使用它。 就應用程序而言,使用該擴展訪問令牌,實際上是發出請求的是相冊所有者。

取自Facebook文檔

擴展客戶端用戶訪問令牌

當人員完成客戶端身份驗證流程並且您檢索其用戶訪問令牌時,默認情況下,該令牌僅有效一到兩個小時。

您可以通過使用fb_exchange_token的grant_type參數將令牌從服務器傳遞到/ oauth端點,從而將該令牌交換為有效期最長為60天的令牌。 [請注意,必須從服務器發送它,這樣才不會暴露App Secret。]如下所示:

  https://graph.facebook.com/oauth/access_token?  \n     grant_type = fb_exchange_token&           \n     CLIENT_ID = APP_ID&\n     client_secret = APP_SECRET&\n     fb_exchange_token = SHORT_LIVED_ACCESS_TOKEN 

來自此端點的響應將包含長期訪問令牌。 這將是與原始令牌不同的字符串,因此,如果要存儲這些令牌,請替換舊令牌。

基本上,一旦任何(注冊)用戶成功登錄並將令牌存儲在數據庫中,您就必須這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM