โทเค็น acess ของ facebook ก็ดูคล้ายกันเช่นกัน "1249203702 | 2.h1MTNeLqcLqw __. 86400.129394400-605430316 | -WE1iH_CV-afTgyhDPc"
หากคุณแยกส่วนตรงกลางโดยใช้ | เพื่อแยกคุณได้
2.h1MTNeLqcLqw __. 86400.129394400-605430316
แล้วแยกอีกครั้งโดย -
ส่วนสุดท้าย 605430316 คือรหัสผู้ใช้
นี่คือรหัส C # เพื่อแยก ID ผู้ใช้จากโทเค็นการเข้าถึง:
public long ParseUserIdFromAccessToken(string accessToken)
{
Contract.Requires(!string.isNullOrEmpty(accessToken);
long userId = 0;
var accessTokenParts = accessToken.Split('|');
if (accessTokenParts.Length == 3)
{
var idPart = accessTokenParts[1];
if (!string.IsNullOrEmpty(idPart))
{
var index = idPart.LastIndexOf('-');
if (index >= 0)
{
string id = idPart.Substring(index + 1);
if (!string.IsNullOrEmpty(id))
{
return id;
}
}
}
}
return null;
}
คำเตือน:
โครงสร้างของโทเค็นการเข้าถึงไม่มีเอกสารและอาจไม่ตรงกับรูปแบบด้านบนเสมอไป ใช้ความเสี่ยงของคุณเอง
อัปเดต
เนื่องจากการเปลี่ยนแปลงใน Facebook วิธีที่ต้องการในการรับรหัสผู้ใช้จากโทเค็นการเข้าถึงที่เข้ารหัสมีดังนี้:
try
{
var fb = new FacebookClient(accessToken);
var result = (IDictionary<string, object>)fb.Get("/me?fields=id");
return (string)result["id"];
}
catch (FacebookOAuthException)
{
return null;
}