iOS Facebook SDK: токен активного доступа должен использоваться для запроса информации о текущем пользователе

Я следил за многими примерами и рассматривал множество вопросов относительно этой ошибки токена доступа, но я не могу понять, почему я его получаю или как это исправить.

Я запускаю Facebook так же, как в примерах 3.1 sdk:

NSArray* permissions = [[NSArray alloc] initWithObjects:@"publish_stream", @"publish_actions", nil]; self.fb = [[FBSession alloc] initWithPermissions:permissions]; [self.fb openWithCompletionHandler:^(FBSession *session, FBSessionState status, NSError *error) { [self sessionStateChanged:session :status :error]; }]; 

Это прекрасно работает, и пользователю предлагается принять разрешения приложения в Safari и затем вернуться в приложение. Когда пользователь возвращается в приложение, мой FBSessionState является FBSessionStateOpen.

Когда я пробую это:

 [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) { [self showAlert:@"logged in?" result:result error:error]; }]; 

или это:

 NSMutableDictionary* fbPost = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"post from iOS", @"message", nil]; [FBRequestConnection startWithGraphPath:@"me/feed" parameters:fbPost HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { [self showAlert:@"message posted?" result:result error:error]; }]; 

но я получаю:

 FBSDKLog: FBURLConnection <#1126>: Duration: 936 msec Response Size: 0 kB MIME type: text/javascript Response: {"error":{"message":"An active access token must be used to query information about the current user.","type":"OAuthException","code":2500}} 

Я взял токен доступа из своей FBSession и поместил его в отладочный токен доступа к Facebook, и он показывает, что у меня есть хороший токен:

 App ID: <hidden> Metadata: {"sso":"iphone-safari"} User ID: <hidden> Issued: 1351525817 (about an hour ago) Expires: 1356709817 (in about 2 months) Valid: True Origin: Mobile Web Faceweb Scopes: create_note photo_upload publish_actions publish_stream share_item status_update video_upload 

Мне нужно упустить некоторые детали в настройках или что-то в этом роде.

Спасибо всем заранее!

5 Solutions collect form web for “iOS Facebook SDK: токен активного доступа должен использоваться для запроса информации о текущем пользователе”

Согласно документам, https://developers.facebook.com/docs/reference/ios/3.1/class/FBRequestConnection

«Запрос использует активный сеанс, представленный [FBSession activeSession]».

Это относится к статическим методам обработки запросов. Итак, что вы хотите сделать, убедитесь, что вы установили активный сеанс. Выполните следующие действия:

 [FBSession setActiveSession:self.fb]; 

Перед тем, как вы вызовете первый метод * FBRequestConnection start *.

Ну По прошествии некоторого времени, заметив, что FBSession.activeSession не был ник, мне не хватало, прежде чем отправить запрос:

  if (!FBSession.activeSession.isOpen) { [FBSession openActiveSessionWithAllowLoginUI: YES]; } 

Я получил эту ошибку в v4 SDK при попытке использовать объект FBSDKGraphRequest , который был создан до входа в систему. Когда я изменил это, чтобы создать FBSDKGraphRequest непосредственно перед его использованием (т.е. после входа в систему), он работал нормально. Кажется, что инициализатор для этого класса устанавливает некоторый токен, который не обновляется при запуске запроса.

Я попробовал обновить свойство tokenString после входа в систему, но по какой-то причине это свойство readonly .

/ * устарел для приложений google и facebook func (_ application: UIApplication, open url: URL, sourceApplication: String ?, annotation: AnyObject) -> Bool {let googleDidHandle = GIDSignIn.sharedInstance (). handle (url, sourceApplication: sourceApplication, аннотация: аннотация)

  let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application( application, 

open: url, sourceApplication: sourceApplication, аннотация: аннотация) print (facebookDidHandle) return googleDidHandle || facebookDidHandle} * /

Поэтому я использовал func-приложение (_ application: UIApplication, open url: URL, options: [String: AnyObject]) -> Bool {

  return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: options) || GIDSignIn.sharedInstance().handle(url as URL!, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey]) } 

xcode 8 beta 3, ios 10

вы можете попробовать это тоже, работает для меня

func application (_ application: UIApplication, open url: URL, options: [String: AnyObject]) -> Bool {

  return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String, annotation: options["UIApplicationOpenURLOptionsAnnotationKey"]) } 
  • Вход для входа в iOS для iOS для iOS и для входа в UIWebView
  • Как обрабатывать истекшие токены доступа Facebook на iOS и FB SDK 3.7
  • Тестовое отслеживание SDK для Android iOS
  • Одно и то же приложение FB, несколько идентификаторов пакетов iOS, с разными суффиксами?
  • iOS как опубликовать действие на пользовательском объекте Graph Api - Facebook
  • iOS SDK сообщает, что «пользователь отказался» при аутентификации на тестовом устройстве
  • Как отправить запрос друга от приложения iOS
  • Facebook Batch Photo Upload iOS
  • Swift Facebook SDK Выход из системы
  • Объект c - iOS 10 Facebook пустой экран
  • Как получить идентификатор сообщения после успешной публикации FB ShareDialog
  • Interesting Posts

    Как повернуть CAShapeLayer в его центральной точке

    Загрузка пакетного изображения с помощью тела запроса

    Ad hoc или распространять приложение для бета-тестирования? Испытательный рейс

    как исправить «malloc: не удается защитить регион для страницы защиты от вторжения» предупреждения на iOS

    Создание настольного приложения для Mac, Windows или iOS с использованием C # или VB в Visual Studio

    UICollectionView изменение макета выбранного элемента и рамки / ограничений

    Что такое имя и размер шрифта по умолчанию для значений выбора UIPickerview в iOS 7 и iOS 6

    Запуск приложения iOS из xcode показывает мне сообщение, чтобы включить ведение журнала отладки

    Неизбежный механизм UIBezierPath для изгиба, контрольная точка и точка кривой

    Добавить строку с переменной

    ios sdk MKMapView перекрывает контакты?

    Хотите отображать собственное событие / расписание в календаре без отражения в собственном календаре в IOS (iPhone и iPad)

    Swift 3: Есть ли способ применить объект к классу и протоколу одновременно?

    Программно запускать кнопку UITableViewCell «Удалить»

    AVAudioPlayer play / pause / stop и релиз UIViewController / dealloc

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.