手游如果支持facebook登錄,就要接入facebook的登錄SDK。剛好工作中自己做了這一塊的接入功能現在記錄分享下來提供一個參考。
當前只是接入了登錄這個功能,先簡單的說說接入facebook登錄的一個流程。客戶端通過玩家輸入的用戶名和密碼向facebook發起登錄的請求,請求登錄如果成功那么就會返回一個token(口令)。那么服務器這邊就需要接收客戶端發來的這個token,然后服務器端這邊還需要一個access_token(這個token就是驗證服務器端有沒有權限訪問facebook的API)向facebook發起驗證請求,請求成功則需要通知客戶端登錄驗證成功允許登錄游戲,否則登錄失敗。
服務器端發送https get請求格式如下(注意是https):
graph.facebook.com/debug_token?input_token={token-to-inspect}&access_token={app-token-or-admin-token}
該端點使用以下參數:
•input_token。您需要檢查的口令。(客戶端發送過來的token)
•access_token:應用訪問口令,或者應用開發者的訪問口令。
input_token就是客戶端發送給服務器端的token。
這里access_token是將應用編號和應用密鑰當作 access_token 參數(應用編號和應用密鑰是開發者向facebook申請接入應用的編號和密鑰)。
正確訪問形式是(這個是期中的一種方式,access_token可以不用app_id|app_scret直接用獲取到的access_token,至於如何獲取可以參考官方文檔):
https://graph.facebook.com/debug_token?input_token={token-to-inspect}&access_token={app_id|app_secret}
app_id|app_secret 類似與這樣:539325719526077|4012ab84f52253939ae6a3abb3b0be35
成功返回如下字符串(具體字段含義參考官方的文檔):
"{"data":
{"app_id":"539325719526077",
"application":"Dynasty Blades",
"expires_at":1469279745,
"is_valid":true,
"issued_at":1464095745,
"metadata":{"auth_type":"rerequest"},
"scopes":["public_profile"],
"user_id":"687980841341627"
}
}"
失敗返回如下類似的字符串(具體字段含義參考官方的文檔):
"{"data":
{"error":
{"code":
190,
"message":"Invalid OAuth access token."
},
"is_valid":false,
"scopes":[]
}
}"
具體的詳情參考官方指南:
https://developers.facebook.com/docs/facebook-login/access-tokens/
https://developers.facebook.com/docs/facebook-login/access-tokens#apptokens
