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 Facebook sdk 3.14 - больше не может получить список друзей?
  • Неявное объявление функции «FBSDK_NOT_DESIGNATED_INITIALIZER» недействительно в ожидаемом C99 »)
  • Как «перепроверить» разрешение электронной почты с помощью iOS SDK для Android 3.21.1?
  • Facebook iOS SDK 4.2: Недействительные схемы URL-адресов для нескольких приложений
  • 'Открыть эту страницу в "null"' Модальное появление из входа в FacebookSDK после обновления iOS9 и Swift 2
  • Facebook открывают историю запуска графика с помощью fitness.course
  • FBSession.activeSession.isOpen возвращает NO, даже если пользователь вошел в систему
  • Facebook SDK 3.0 HelloFacebookSample ошибки сборки
  • Родное приложение для iOS: что я ставлю в разработчике Facebook «iPhone App Store ID» в разделе «Настройки», «Основные»?
  • Публикация фотографии на страницу фейсбука с помощью приложения iOS обычными пользователями, не являющимися администраторами
  • FBDialogClosePNG.h не найден в Facebook iOS SDK
  • Interesting Posts

    Индексированные NSFetchedResultsController

    Преобразование времени GMT в местное время

    Как получить обложку из epub-файла?

    Установите приложения iOS на устройство без программы разработчика, iOS 5.1

    Вызов метода в определенное время каждый день

    Переименование значения plist программно?

    iOS – UITableView не отображает ячейки

    как получить доступ к segue в 'didSelectRowAtIndexPath' – Swift / IOS

    AVFoundation: чтение видео из файла – обработка кадров + аудио и повторная запись

    Есть ли какие-либо частные api, которые могут контролировать доступ к клавиатуре (какое приложение использует клавиатуру, время доступа и т. Д.) На iphone?

    Xcode аварийный репортер и биткод

    ошибка 258, в то время как интегрировать помощник api для youtube в iOS

    Не удалось загрузить приложение

    Как использовать SwiftyJSON в моем приложении для iOS?

    ios 5.0 для входа в twitter в проблемах симулятора ios

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