關於facebook sdk 獲取 email

以下取自facebook 頁面:

email

透過 user 物件的 email 屬性,提供用戶主要電子郵件地址的存取權。

請勿向用戶發送垃圾郵件。使用電子郵件時必須遵守 Facebook 政策和垃圾郵件管制法(CAN-SPAM Act)。

請注意:即使要求 email 權限,亦不保證會取得電子郵件地址。例如,如果用戶使用電話號碼而非電子郵件地址來註冊 Facebook,則電子郵件欄位可能空白。

審查

應用程式可使用此項權限而無須經過 Facebook 審查。

之前才想說為什麼有時候拿不到email,因為用手機號碼註冊的用戶,沒有透露email給facebook,這樣在寫facebook登入時,需要做特別處理。

參考來源:
https://developers.facebook.com/docs/facebook-login/permissions

Facebook php sdk 50 :Facebook SDK returned an error: Cross-site request forgery validation failed. Required param “state” missing.

解法:

參考:

https://github.com/facebook/facebook-php-sdk-v4/issues/473
https://github.com/facebook/facebook-php-sdk-v4/blob/4.0.16/src/Facebook/FacebookRedirectLoginHelper.php#L205
https://github.com/facebook/facebook-php-sdk-v4/issues/470#issuecomment-212561488
https://github.com/facebook/facebook-php-sdk-v4/issues/572
https://github.com/facebook/facebook-php-sdk-v4/issues/470
https://github.com/facebook/facebook-php-sdk-v4/issues/529

粉絲團自動貼文:使用facebook php sdk > 4.0.*

要使用php sdk做粉絲團自動貼文步驟如下:

步驟1.取得app_id與app_secret

上https://developers.facebook.com/開一個app,之後會有app_id與app_secret。

步驟2.取得access_token

要讓應用程式取得使用者(粉絲團擁有者)的權限,也就是讓應用者能代替使用者貼文,這需要先取得access_token,因為之後會需要拿到page_tokens。
可以從這裡拿到:https://developers.facebook.com/tools/explorer。進去這個頁面後,Application點選剛剛開的應用程式,然後右邊點選get_page_tokens。之後就可以拿到上方的access_token。

步驟3.取得貼文權限

除了有access_token之外,還要讓使用者帳號授權給應用程式,所以通常需要寫個程式,透過登入(login dialog)來取得。而應用程式需要有以下權限:manage_pages與publish_pages。詳細說明可以看facebook官網

步驟4.取得long_lived_token

1.當使用者同意後,應用程式就有權限可以代替使用者貼文。不過透過第二步驟取得的access_token是short_lived_token,也就是只能用一個小時就沒用了。
如果我們要長期貼文,就需要取得long_lived_token。關於這部分的說明,可以看facebook說明頁面

2.基本上取得的步驟,可以從這個網址:
https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=aaa&client_secret=bbb&fb_exchange_token=ccc

3.上述aaa,bbb,ccc分別代表剛剛取得的app_id、app_secret、access_token。之後頁面會顯示一行字串,上面的access_token就是long_lived_token。要看是不是真的可以用兩個月,可以到以下網址:
https://developers.facebook.com/tools/debug/accesstoken?q=long_lived_token

4.有了long_lived_token之後,就要將它存到db,隨時取用,然後在兩個月內,透過上述步驟,定期手動更新,才不會過期。

步驟5.寫php程式

1.先用composer把php sdk裝起來。通常會在程式碼加入以下片段:

只要確定有load進來即可。

2.記得宣告

3.貼文的短程式碼範例

facebook_fanpage_id就是粉絲團的專屬id,上面要的資料、參數都有了,接下來就可以自動透過程式貼文到粉絲團上了。

步驟6.寫成cron

透過上述步驟,應該可以順利自動貼文了,最後再寫成cron,就可以定期貼文,後端程式碼依個人需求自行設計。

相關文章:
1.How to post into a Facebook Page with PHP using Graph API
2.https://developers.facebook.com/docs/php/howto/example_post_links/5.0.0
3.access_token 官方說明頁面

Ruby on Rails做Facebook登入機制:使用Omniauth gem

Omniauth是一個ruby gems,使用它可以讓你不需要像php一樣要include facebook.php,也不用寫前端javascript,它已經 幫你全部做好了,妳只需要用它即可,以下是全部步驟,供參考。