Contents

Facebook登入-Facebook SDK API

Facebook登入-Facebook SDK API

這陣子在統一第三方驗證寫法,試做了幾種OAuth Login,剛好紀錄一下流程,Facebook Login是我第一個的接觸,最簡單的方法莫過於Facebook官方的SDK,如果建立應用程式服務的畫面與你目前使用的不同,很可能是官網改版了

環境

  • Facebook Graph Api v8.0
Note
API版本變動很快,可能與內容已有落差,建議先看官方目前的範例 Facebook 開發人員應用程式 https://developers.facebook.com/docs/facebook-login/web/

建立應用程式服務

  1. https://developers.facebook.com/apps/ 建立應用程式

    /static/Facebook_SDK_API_4afa89d1e8ee45aca410270ccbe7461b/_2020-09-09_113000.png
  2. 產品 > 建立Facebook 登入

    /static/Facebook_SDK_API_4afa89d1e8ee45aca410270ccbe7461b/_2020-09-09_113445.png /static/Facebook_SDK_API_4afa89d1e8ee45aca410270ccbe7461b/_2020-09-09_115115.png
  3. 設定 > 設定重新導向URI,這個是回傳路徑,應用程式到這邊就初步建立完畢了

    /static/Facebook_SDK_API_4afa89d1e8ee45aca410270ccbe7461b/_2020-09-09_114611.png

實作

https://developers.facebook.com/docs/facebook-login/web/ 尋找完整程式碼範例,替換{app-id} (就是剛剛申請的應用程式編號) 和{api-version},直接貼上就可以運作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<div class="fb-login-button" 
     data-size="large" 
     data-button-type="continue_with" 
     data-layout="default" 
     data-auto-logout-link="false" 
     data-use-continue-as="false" 
     data-width="" 
     scope="public_profile,email" 
     onlogin="checkLoginState();">
</div>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<script>

  function statusChangeCallback(response) {
      console.log(response);
      if (response.status === 'connected') {
          testAPI();
      } else {
          document.getElementById('status').innerHTML = 'Please log ' +
              'into this webpage.';
      }
  }

  function checkLoginState() {
      FB.getLoginStatus(function (response) {
          statusChangeCallback(response);
      });
  }

  window.fbAsyncInit = function () {
      FB.init({
          appId: '{app-id}',
          cookie: true,
          xfbml: true,
          version: 'v8.0'
      });

      FB.getLoginStatus(function (response) {
          statusChangeCallback(response);
      });
  };

  function testAPI() {
		  // 設定取得Email
      FB.api('/me?fields=id,name,email', function (response) {
          console.log(response);
      });
  }
</script>

<script async defer crossorigin="anonymous" src="https://connect.facebook.net/zh_TW/sdk.js#xfbml=1&version=v8.0&appId=2676189852639715&autoLogAppEvents=1" nonce="niZd8nLu"></script>
/static/Facebook_SDK_API_4afa89d1e8ee45aca410270ccbe7461b/_2020-09-22_13-52-41.png

參考

Facebook JavaScript SDK 的網頁版「Facebook 登入」

https://developers.facebook.com/docs/facebook-login/web/

結論

這篇其實主要是設置環境而已,不建議從「快速入門」使用,有缺少Javascript Function,改從 搭配 JavaScript SDK 的網頁版「Facebook 登入」 ,最下方有完整的程式碼範例,照貼就可以運作,再來就是依照自己的需求進行調整。

另外官方設置的重新導向URI在Facebook SDK版本中並沒有作用。

備註

Facebook SDK有時候打開Console,會出現一堆有的沒有的log訊息,不太清楚原因,有時候隔天訊息就沒了,感覺也有可能是chrome extensions的問題

/static/Facebook_SDK_API_4afa89d1e8ee45aca410270ccbe7461b/_2020-09-09_115858.png