Я пытаюсь интегрировать API Календаря Google с моим приложением Rails 4 и столкнулся с проблемой из-за того, что API ожидают, что токены аутентификации пользователя будут храниться в файле, похожем на " Использовать Google :: Auth :: Stores :: FileTokenStore с базой данных".
Как указано в вопросе и в руководстве по быстрому запуску , Google ожидает, что токен будет представлен в виде файла, но в результате, когда я пытаюсь авторизовать клиента, используя:
...
client = Google::Apis::CalendarV3::CalendarService.new
return unless (user.present? && user.google_auth_token.present? && user.google_auth_refresh_token.present?)
begin
authorizer = Google::Auth::WebUserAuthorizer.new(Google::Auth::ClientId.new(ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET']), Google::Apis::CalendarV3::AUTH_CALENDAR, current_user.google_auth_token)
credentials = authorizer.get_credentials('default')
, я получаю кучу ошибок, таких как
private method 'load' called for string' (`current_user.google_auth_token`)
или что-то, что я передаю вместо чего-то вроде
Google::Auth::Stores::FileTokenStore.new file: TOKEN_PATH
, где он получает токен из хранилища файлов / redis. Я полагаю, что ошибки частного метода происходят из-за неправильного типа объекта, но я не могу понять, что ему дать.
Я попытался добавить и запросить модуль, аналогичный вопросу StackOverflow, но все равно получаю те же ошибки. Я попытался использовать объект, который я получил из этой строки, исправленной обезьяной, но это просто строка JSON, и поэтому я получаю те же ошибки.
Как также упоминалось в исходном вопросе SO, в readme упоминается, что он может обрабатывать только хранилища файлов, но пользовательских хранилищ могут быть реализованы . Но я все еще получаю те же ошибки при вызове метода #get_credentials
.
Кто-нибудь сталкивался с этой проблемой раньше? Как я могу использовать свой токен аутентификации пользователя, хранящийся в моей базе данных PostgreSQL, для авторизации API Google?