Mã thông báo facebook acess trông cũng tương tự "1249203702 | 2.h1MTNeLqcLqw __. 86400.129394400-605430316 | -WE1iH_CV-afTgyhDPc"
nếu bạn trích xuất phần giữa bằng cách sử dụng | chia tách bạn nhận được
2.h1MTNeLqcLqw __. 86400.129394400-605430316
sau đó chia lại bằng -
phần cuối cùng 605430316 là id người dùng.
Đây là mã C # để trích xuất id người dùng từ mã thông báo truy cập:
public long ParseUserIdFromAccessToken(string accessToken)
{
Contract.Requires(!string.isNullOrEmpty(accessToken);
/*
* access_token:
* 1249203702|2.h1MTNeLqcLqw__.86400.129394400-605430316|-WE1iH_CV-afTgyhDPc
* |_______|
* |
* user id
*/
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;
}
CẢNH BÁO:
Cấu trúc của mã thông báo truy cập không có tài liệu và có thể không phải lúc nào cũng phù hợp với mẫu trên. Sử dụng nó có nguy cơ của riêng bạn.
Cập nhật
Do những thay đổi trong Facebook. phương pháp ưa thích để lấy userid từ mã thông báo truy cập được mã hóa như sau:
try
{
var fb = new FacebookClient(accessToken);
var result = (IDictionary<string, object>)fb.Get("/me?fields=id");
return (string)result["id"];
}
catch (FacebookOAuthException)
{
return null;
}