Как использовать токен автономного доступа Google для аутентификации в фоновом режиме на iOS?

Укороченная версия:

Я хочу использоватьКлиент Google OAuth2 для Objective C создать действительныйGTMOAuth2Authentication объект для использования в моем приложении с токеном автономного доступа, который я получаю из своего бэкэнда. Как я могу это сделать?

Моя ситуация:

Мое приложение использует аналитическую область только для чтения, чтобы получить некоторые данные о веб-сайтах пользователя. Я могу это сделать, войдя в систему сGTMOAuth2ViewControllerTouch ViewController, предоставленный клиентом Google OAuth2 для Objective C. Затем он дает мне действительныйGTMOAuth2Authentication объект, который я могу использовать для запроса Google Analytics черезКлиент Google API.

Теперь мы не хотим предоставлять пользователям доступ к Google Analytics (у некоторых нет учетных записей Google, и в целом мы хотим, чтобы информация была простой с помощью приложения). Это означает, что мы должны войти в систему с помощью нашего аккаунта (который имеет доступ ко всем данным Google Analytics). Очевидно, что мы не можем предоставить нашим пользователям свои учетные данные, поэтому нам пришлось искать решение для этого.

Мой план:

Я думаю, что эту проблему можно решить, запросив нашу строку токена (автономный доступ) из нашего бэкэнда (с помощью шифрования SSL), сохранив ее в цепочке ключей пользователя и в дальнейшем используя ее в приложении для запроса к Google Analytics. Затем мы позволяем пользователю войти в наш сервис (чтобы мы могли определить, к каким веб-сайтам пользователь имеет доступ) и показываем данные.

Моя проблема:

Я искал везде, просмотрел (очень тонкую) документацию Google, осмотрелGTMOAuth2Authentication исходный код, но я не могу обернуть голову вокруг проблемы. Мне кажется, что было бы решение, подобное этому (потому что я использую аналогичный подход в нашей CMS, чтобы позволить пользователю публиковать сообщения на нашей стене Facebook), так чего мне здесь не хватает?

Текущий код входа в систему:

GTMOAuth2ViewControllerTouch *viewController = [[GTMOAuth2ViewControllerTouch alloc]
                                                    initWithScope:scope
                                                    clientID:kMyClientID
                                                    clientSecret:kMyClientSecret
                                                    keychainItemName:kKeychainItemName
                                                    completionHandler:
    ^(GTMOAuth2ViewControllerTouch *viewController, GTMOAuth2Authentication *auth, NSError *error) {
        if (error != nil) {
            // Authentication failed
            DebugLog(@"Failed!");
        } else {
            // Authentication succeeded
            DebugLog(@"Success!");

            // Update interface
            self.loginButton.hidden = YES;

            self.authentication = auth;
        }
    }]; 

Что я пробовал:

Я пытался вручную создатьGTMOAuth2Authentication Объект и установка всех параметров самостоятельно (область действия, клиент, секретность, токен доступа, токен обновления, callbackuri, URL токена и т. д.), но я получаю ошибку 401: Требуется вход в систему, когда я пытаюсь использовать объект для запросов. Поэтому я думаю, что это не способ сделать это.

Ссылки:

Клиент Google OAuth2Google API target-c клиент

Спасибо за прочтение!