Плагин OAuth2: аватар не используется

Привет,

Я выношу в отдельную тему проблему, упомянутую здесь: Discourse OAuth2 Basic - #304 by nodomain
здесь: Discourse OAuth2 Basic - #316 by jmlord (это я)
и, возможно, здесь: User avatar not updating on re-log in

Учётная запись создаётся успешно, но аватар не добавляется. Пример ответа:

Body: {
  "access_token":"...",
  "token_type":"bearer",
  "expires_in":"3600",
  "scope":"profile",
  "profile" : {
    "id":1234,
    "email": "...",
    "name": "...",
    "picture": "https://somedomain.com/somevalidpicture.jpg"
  }
} 

Переменная oauth2 callback user info paths содержит значение avatar:profile.picture, и оно корректно парсится, поскольку это видно в следующем логе:

OAuth2 Debugging: after_authenticate response: 

creds: {"token"=>"...", "expires_at"=>1702053692, "expires"=>true}
uid: 1234
info: {"email"=>"...", "name"=>"...", "avatar"=>"https://members.geobon.org/pages/profile-picture/..."}
extra: {}

Я проверил, что адрес изображения верный, а его размер составляет 300x300. Вот пример: sample.

Я также проверил логи сервера, где хранятся изображения, и не обнаружил попыток загрузки этого изображения в процессе создания учётной записи и первого входа.

Есть ли какие-либо идеи, почему у нас это не работает? (Очевидно, что с другими конфигурациями всё работает…)

хм, не уверен, что можно получить аватар

Привет, Лиллиан, спасибо за помощь.

Цитируемый пост, похоже, относится к случаю, когда конечная точка не была прямой ссылкой на файл. Здесь ситуация немного иная, так как мы предоставляем прямую ссылку на файл.

Кроме того, в некоторых случаях это работает:

Также всплывающая подсказка свойства oauth2 callback user info paths гласит:

Пути в ответе токена к другим свойствам пользователя. Поддерживаемые свойства: name, username, email, email_verified и avatar. Формат: property:path, например: name:params.info.name

Если не через URL, как нам это сделать? Должен ли я закодировать его в base64 в файле?

Редактирование: Позвольте мне попробовать двухэтапный процесс, где результат аватара изображения будет в другом запросе, а не в ответе токена, и я напишу снова.

Хорошо, у меня получилось заставить это работать в двухэтапном процессе. Похоже, либо подсказка неверна, либо в этой части плагина есть ошибка:

oauth2 callback user info paths: … Поддерживаемые свойства: name, username, email, email_verified и avatar.

Последнее утверждение неверно. Чтобы аватары работали, необходимо добавить JSON-эндпоинт для данных пользователя, включить опцию «Fetch user JSON for OAuth2» и заполнить свойство oauth2 json avatar path.