Как получить идентификатор пользователя Facebook с помощью токена доступа

У меня есть настольное приложение для Facebook, и я использую Graph API . Я могу получить токен доступа, но после этого – я не знаю, как получить идентификатор пользователя.

Мой stream выглядит так:

  1. Я отправляю пользователя на https://graph.facebook.com/oauth/authorize со всеми необходимыми расширенными разрешениями.

  2. На моей странице перенаправления я получаю код из Facebook.

  3. Затем я выполняю HTTP-запрос на graph.facebook.com/oauth/access_token с помощью моего ключа API, и я получаю токен доступа в ответе.

С этого момента я не могу получить идентификатор пользователя.

Как решить эту проблему?

Если вы хотите использовать Graph API для получения текущего идентификатора пользователя, просто отправьте запрос:

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

Самый простой способ –

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

то вы получите ответ json, который содержит только идентификатор пользователя.

Точно так же токен facebook аналогичен “1249203702 | 2.h1MTNeLqcLqw __. 86400.129394400-605430316 | -WE1iH_CV-afTgyhDPc”

если вы извлекаете среднюю часть, используя | расколоть

2.h1MTNeLqcLqw __. 86400.129394400-605430316

затем снова разделить –

последняя часть 605430316 является идентификатором пользователя.

Вот код C # для извлечения идентификатора пользователя из токена доступа:

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

ПРЕДУПРЕЖДЕНИЕ . Структура токена доступа недокументирована и может не всегда соответствовать шаблону выше. Используйте его на свой страх и риск.

Обновление из-за изменений в Facebook. предпочтительным способом получения идентификатора пользователя из зашифрованного токена доступа является следующее:

 try { var fb = new FacebookClient(accessToken); var result = (IDictionary)fb.Get("/me?fields=id"); return (string)result["id"]; } catch (FacebookOAuthException) { return null; } 

Вы можете использовать ниже код onSuccess (LoginResult loginResult)

. LoginResult.getAccessToken () getUserId ();

С новейшим API, вот код, который я использовал для него

 /*params*/ NSDictionary *params = @{ @"access_token": [[FBSDKAccessToken currentAccessToken] tokenString], @"fields": @"id" }; /* make the API call */ FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:params HTTPMethod:@"GET"]; [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { NSDictionary *res = result; //res is a dict that has the key NSLog([res objectForKey:@"id"]); 

Вам просто нужно нажать другой графический API:

 https://graph.facebook.com/me?access_token={access-token} 

Он также даст вам идентификатор электронной почты и идентификатор пользователя (для Facebook).

в FacebookSDK v2.1 (я не могу проверить более старую версию). У нас есть

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

Однако, согласно комментарию в FacebookSDK

@discussion Это не может быть заполнено для поведения входа, такого как системная учетная запись iOS.

Возможно, вы должны проверить, доступно ли это, а затем использовать ли его или вызвать запрос на получение идентификатора пользователя

  • Каковы шаги для получения долгого токена для отправки на страницу фан-сайта Facebook с сервера
  • Как получить доступ к личной информации Facebook, используя идентификатор ASP.NET (OWIN)?
  • Facebook API SDK отменяет доступ
  • facebook: постоянный токен доступа к странице?
  • Создание страницы Facebook программно через Open Graph API
  • возможно ли выполнить ответы JSON только с JDK или HttpComponents?
  • Angular 4 - обновить метаtags динамически для Facebook (Открыть график)
  • Как работает подкачка в API-интерфейсе facebook javascript?
  • Создание хеш-ключа для приложения с помощью facebook sdk
  • Ошибка Недопустимые области: offline_access, publish_stream, когда я пытаюсь подключиться к API Facebook
  • Проводка на стене друзей с помощью API-интерфейса Graph через соединение «feed» с 6 февраля 2013 г.
  • Давайте будем гением компьютера.