關於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之後,就可以繼續您的登入程序

arrow
arrow
    文章標籤
    asp asp.net vb.net webform
    全站熱搜
    創作者介紹
    創作者 夜市 小霸王 的頭像
    夜市 小霸王

    夜市小霸王

    夜市 小霸王 發表在 痞客邦 留言(0) 人氣()