94 votes

Comment obtenir le Facebook id d'utilisateur en utilisant le jeton d'accès

J'ai un Facebook application de bureau et je suis à l'aide de l' API Graphique. Je suis en mesure d'obtenir le jeton d'accès, mais après que c'est fait, je ne sais pas comment récupérer l'ID de l'utilisateur.

Mon flow est comme ceci:

  1. J'envoie à l'utilisateur de https://graph.facebook.com/oauth/authorize avec tout le nécessaire d'autorisations étendues.

  2. Dans ma page de redirection je obtenir le code de Facebook.

  3. Puis-je effectuer une requête HTTP *graph.facebook.com/oauth/access_token* avec ma clé API et l'-je obtenir le jeton d'accès dans la réponse.

À partir de ce moment je ne peux pas obtenir l'ID de l'utilisateur.

Comment résoudre ce problème?

160voto

serg Points 43893

Si vous souhaitez utiliser l'API Graphique pour obtenir l'ID de l'utilisateur courant alors il suffit d'envoyer une demande à:

https://graph.facebook.com/me?access_token=...

35voto

pashaplus Points 379

Le plus simple est

https://graph.facebook.com/me?fields=id&access_token="xxxxx"

ensuite, vous aurez réponse json qui contient uniquement id utilisateur.

10voto

prabir Points 4608

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;
}

2voto

Gia Dang Points 101

dans FacebookSDK v2.1 (je ne peux pas vérifier ancienne version). Nous avons

NSString *currentUserFBID = [FBSession activeSession].accessTokenData.userID;

Cependant, selon le commentaire de FacebookSDK

@la discussion, Ce ne peut pas être remplie pour la connexion des comportements tels que l'iOS système de compte.

Cela peut peut-être vous devriez vérifier si il est disponible, et si l'utiliser, ou d'appeler la demande pour obtenir l'id de l'utilisateur

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X