First at all
官方 : https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow
- 手動建立的流程中,有分兩個方式取得 token
- 直接在要求 oauth 的授權 url 中 加入參數
response_type=token
,但返回的 token 會夾帶在 fragment(hashtag) 中,可透過 js 取得(因為在 url 的解析中,無法直接取得 fragment 的參數)。 - 透過 oauth default 方法取得 code,把 code 送去交換取得 token
- 直接在要求 oauth 的授權 url 中 加入參數
方法一 : 直接取得 token -> 驗證 token
- URL 組成 :
scheme://host:port/path?query#fragment
- fragment : fragment 片段 網頁中可能會分為不同的片段,如果想訪問網頁後直接到達指定位置(tag),可以在這部分設置
https://www.facebook.com/v2.10/dialog/oauth?client_id={your_app_id}&response_type=token&redirect_uri={redirect_uri}
- parameters
- client_id
- response_type = token
- redirect_uri
- response url :
{redirect_uri}?#access_token={token}&expires_in={expires_in}
: 注意 token 是放在 fragment 的字串中- php 透過 javascript 取得 fragment string :
$fragment = "<script>document.write(window.location.hash);</script>";
- php 透過 javascript 取得 fragment string :
- parameters
- 驗證 :
- 取得 your_app_token :
https://graph.facebook.com/oauth/access_token?client_id={your_app_id}&client_secret={your_app_secret}&grant_type=client_credentials
- parameters
- client_id
- client_secret
- grant_type=client_credentials
- response json :
{"access_token": {your_app_token}, "token_type": "bearer"}
- parameters
- 驗證 :
https://graph.facebook.com/debug_token?input_token={token}&access_token={app-token-or-admin-token}
- parameters
- input_token
- access_token : 此為 上步驟中 respone 的 access_token
- response : 請參考 附註:javascript pass value to php
- parameters
- 取得 your_app_token :
先取得 code -> 使用 code 來取得 token -> 驗證 token
https://www.facebook.com/v2.10/dialog/oauth?client_id={your_app_id}&redirect_uri={redirect_url}
- parameters
- client_id
- redirect_uri
- response url :
{reditect_url}?code={code}#_=_
- parameters
https://graph.facebook.com/v2.10/oauth/access_token?client_id={your_app_id}&client_secret={your_app_secret}&redirect_uri={redirect_url}&code={code}
- parameters
- client_id
- client_secret
- redirect_uri : 在索取 code 時,使用的 redirect_uri,兩者必須相同
- code : 步驟 1 中取得的 code
- response json :
{ "access_token": {access-token}, "token_type": {type}, "expires_in": {seconds-til-expiration} }
- parameters
- 驗證 :
- 取得 your_app_token :
https://graph.facebook.com/oauth/access_token?client_id={your_app_id}&client_secret={your_app_secret}&grant_type=client_credentials
- parameters
- client_id
- client_secret
- grant_type=client_credentials
- response json :
{"access_token": {your_app_token}, "token_type": "bearer"}
- parameters
- 驗證 :
https://graph.facebook.com/debug_token?input_token={token}&access_token={app-token-or-admin-token}
- parameters
- input_token
- access_token : 此為 上步驟中 respone 的 access_token
- response : 請參考
https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#checktoken
- parameters
- 取得 your_app_token :
附註 : javascript pass value to php
1 |
|