Rails с клиентом Google API: значение поля заголовка не может включать CR/LF

ArgumentError in Users::OmniauthCallbacksController#google_oauth2
header field value cannot include CR/LF

Действительно не уверен, откуда эта ошибка.

Я использую ruby ​​2.5, Rails 5 и google-api-client 0.8.2

Любые идеи, как исправить или какую информацию я могу предоставить, чтобы сделать этот вопрос более информативным?

Обновление: мои журналы показывают это, когда я пытаюсь авторизоваться с помощью API Google

Google::APIClient::Request Sending API request get https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest {"User-Agent"=>"hello U/1.0.0 google-api-ruby-client/0.8.2 Mac OS X/10.13.4\n (gzip)", "Accept-Encoding"=>"gzip", "Content-Type"=>""}

И из моего исследования, CRLF это символы "\r\n", верно?

Так "User-Agent"=>"hello U/1.0.0 google-api-ruby-client/0.8.2 Mac OS X/10.13.4\nвероятно проблема.

Поэтому мой вопрос будет таким: как мне получить доступ к User Agent в моем запросе, чтобы исправить эту проблему с Rails 5?

1 ответ

При использовании Google::APIClient, созданный User-Agent может содержать CRLF. Его можно переопределить в конструкторе. Пример:

Google::APIClient.new(application_name: 'Foo', application_version: '1.0', user_agent: 'Foo/1.0 google-api-ruby-client/0.8.6 Linux/4.15.0-65-generic (gzip)')

Вы можете изменить строку user_agent, чтобы удалить CR/LF. Я использую Rails 4.1.8 иgoogle-api-client версия `

  @api_client = Google::APIClient.new(:application_name=>"Chronos", :application_version=>0)
  # work around a bug that puts a CR/LF in the user agent string
  @api_client.user_agent = @api_client.user_agent.gsub("\n", "")

Обновить гем google-api-client к версии 0.20.0. Это решает проблему, но требует внесения других изменений в приложение.

Обновление версии гема google-api-client помогло мне.

Другие вопросы по тегам