Вопросы

Apple Auth не работает на Ruby on Rails Backend

Мне нужно аутентифицировать пользователя с помощью Apple Auth в мобильном приложении. Я получил IdentityToken, User и AuthCode из запроса API из мобильного приложения.

Мне нужно аутентифицировать пользователя и получить его электронную почту. Мой класс AppleId всегда возвращает «invalid_client«.

Может у меня в логике какие-то ошибки?


class AppleId

    URL = 'https://appleid.apple.com/auth/token'
    ISSUER = 'https://appleid.apple.com'
    TEAM_ID = '6Z******38'
    KEY_ID = '33******KP'
    IDENTIFIER = 'ru.k*************on'
    PRIVATE_KEY = <<-PEM
-----BEGIN PRIVATE KEY-----
MIGTA**********z7
-----END PRIVATE KEY-----
PEM

    def initialize
      @private_key = OpenSSL::PKey::EC.new PRIVATE_KEY
    end    

    def authenticate(code)
      make_request(code)
    end

    private 

    def make_request(code) 
      uri = URI.parse(URL) 
      http = Net::HTTP.new(uri.host, uri.port)
      http.use_ssl = true

      request = Net::https::Post.new(uri.request_uri)

      params =  {
        client_id: IDENTIFIER,
        client_secret: client_secret_jwt,
        code: code,
        grant_type: 'authorization_code' 
       }

       request.set_form_data(params)
       response = http.request(request)
       response.body
    end

    def client_secret_jwt
      jwt = JSON::JWT.new(
        iss: TEAM_ID,
        aud: ISSUER,
        sub: IDENTIFIER,
        iat: Time.now,
        exp: 1.minutes.from_now
      )
      jwt.kid = KEY_ID
      JWT.encode jwt, @private_key, 'ES256'
    end

end

В моем контроллере:

authCode = params[:auth_code]

AppleId.new.authenticate(authCode)
=> "{\"error\":\"invalid_client\"}"

Это Ruby gem, который делает это, и его README включает ссылку на пример проекта Rails, чтобы проиллюстрировать, как это работает. Я знаю, что это не дает прямого ответа на ваш вопрос, но, возможно, это поможет вам понять, как решить проблему. РЕДАКТИРОВАТЬ: Также есть суть.   —  person Mike Havit    schedule 27.12.2019

Читать:
FiPy для потока заряженных частиц

Кроме того, хотя он не касается конкретно Rails, этот пост может быть полезен: Войти через Apple (приложение iOS + проверка бэкэнда) API возвращает ошибка «invalid_client»   —  person Mike Havit    schedule 27.12.2019

У меня тоже была аналогичная проблема. Client_id на сервере должен быть ServiceId не AppId   —  person Mike Havit    schedule 02.01.2020

Похожие записи

Отладчик выдает правильный вывод, а нормальное выполнение — нет.

admin

Как сохранить ответ JSON от входа пользователя в Core Data для отслеживания состояния пользователя в Swift?

admin

Навигация по маршруту Angular Nativescript дает ошибку

admin

Препроцессор GCC не работает? Время компиляции больших файлов с комментариями или без них

admin

извлекать блестящую дату и диапазон входных данных

admin

Как я могу отправить эфир между двумя АККАУНТАМИ в remix IDE?

admin