關於FB login後台設定,請自行參閱FB後台設定指導。這裡只說明如何在使用者按登入後,
一、前端html部份新增一個按鈕,並賦予超連結如下:
<a href="https://www.facebook.com/v8.0/dialog/oauth?client_id=你的client_id&redirect_uri=你的callback網址&state=亂數>你的按鈕</a>
上述的callback網址是使用者如果登入成功後,會返回你的網站的網址,並會附帶一個code讓你進行後續處理,state是返回時會帶給你,讓你確認是不是由你的網站發出(實際上沒什麼用)。
當你收到fb返回callback網址時,就是一連串的get步驟大概如下
二、asp.net後端驗證流程
1.取得使用者權仗:用callback拿到的code換成使用者權杖
Dim code = Request.QueryString("code")
Dim webClient1 As New System.Net.WebClient
Dim UsertokenUrl = "https://graph.facebook.com/v8.0/oauth/access_token?client_id=你的client_id&&redirect_uri=你的callback網址&client_secret=你的FBclient密碼&code=上面拿到的code
Dim result As String = webClient1.DownloadString(UsertokenUrl)
Dim Usertoken = JsonConvert.DeserializeObject(Of Object)(result)
取得的result 內容如下:
"{""access_token"":""使用者權杖"",""token_type"":""bearer"",""expires_in"":時間}"
2.取得應用程式權杖:應用程式權杖是你FB的權杖,目的是用來完成步驟3取得使用者user_id
Dim AccesstokenUrl = "https://graph.facebook.com/oauth/access_token?client_id=你的client_id&client_secret=你的FBclient密碼&grant_type=client_credentials"
Dim result1 As String = webClient1.DownloadString(AccesstokenUrl)
Dim Accesstoken= JsonConvert.DeserializeObject(Of Object)(result1)
取得的result1 內容如下:
"{""access_token"":""你的應用程式權杖"",""token_type"":""bearer""}"
3.驗證使用者權杖:如步驟2所說,用自己的應用程式權杖accesstoken 及步驟1取得的使用者權杖usertoken 換成user_id
Dim UserIdUrl= "https://graph.facebook.com/debug_token?input_token=" & Usertoken("access_token") & "&access_token=" & Accesstoken("access_token")
Dim result2 As String = webClient1.DownloadString(UserIdUrl)
Dim Userid = JsonConvert.DeserializeObject(Of Object)(result2)
取得的result2 內容如下:
"{""data"":{""app_id"":""你的client_id"",""type"":""USER"",""application"":""你的APP名稱"",""data_access_expires_at"":時間,""expires_at"":時間,""is_valid"":true,""issued_at"":時間,""scopes"":[""email"",""public_profile""],""user_id"":""使用者user_id""}}"
4.取得使用者mail, id
Dim emailtoken = "https://graph.facebook.com/" & Userid("data")("user_id") & "?fields=email&access_token=" & usertoken("access_token")
Dim result3 As String = webClient1.DownloadString(emailtoken)
Dim email = JsonConvert.DeserializeObject(Of Object)(result3)
取得的result3 內容如下:
{{
"email": "xxxxxx@xxxx.com",
"id": "使用者id"
}}
當拿到usermail及id之後,就可以繼續您的登入程序