Le facebook d'accès jeton ressemble trop
"1249203702/2.h1MTNeLqcLqw__.86400.129394400-605430316|-WE1iH_CV-afTgyhDPc"
si vous extrait la partie du milieu à l'aide de | à split, vous obtenez
2.h1MTNeLqcLqw__.86400.129394400-605430316
puis la diviser à nouveau par -
la dernière partie 605430316 est l'id de l'utilisateur.
Voici le code C# pour extraire l'id de l'utilisateur dans le jeton d'accès:
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;
}
AVERTISSEMENT:
La structure du jeton d'accès est sans papiers et ne peut pas toujours fonction de la configuration ci-dessus. Utilisez à votre propre risque.
Mise à jour
En raison de changements dans Facebook.
la méthode préférée pour obtenir l'identifiant de l'accès crypté jeton est comme suit:
try
{
var fb = new FacebookClient(accessToken);
var result = (IDictionary<string, object>)fb.Get("/me?fields=id");
return (string)result["id"];
}
catch (FacebookOAuthException)
{
return null;
}