Я клонировал https://github.com/ananay/passport-apple-example и заменил конфиг на это:
clientID: "com.myname.web",
teamID: "myteamid",
callbackURL: "https://myurldev.com/auth/apple/redirect",
keyID: "mykeyid",
privateKeyLocation: path.join(__dirname, "../apple-key.p8")
Я также добавил сертификат SSL на свой компьютер и запустил сервер с https, все работает нормально и распознается моим браузером. Я также запускаю приложение на порту 443 и проксирую его, используя файл моих хостов myurl.dev.com - ›127.0.0.1.
У меня такая же настройка аутентификации для facebook, google и microsoft, и все работает нормально.
У меня есть:
- Создал новый идентификатор приложения и включил для него вход через Apple, назвав его: com.myname.dev
- Создал новый идентификатор СЕРВИСА и включил Вход с помощью Apple, назвал его: com.myname.web
- Добавлен https://myurldev.com/auth/apple/redirect в URL-адреса ответа для идентификатора службы com.myname.web
- Установите идентификатор моего приложения com.myname.dev в качестве основного идентификатора приложения, с которым будет сгруппирована моя служба.
- Создан закрытый ключ и включен вход с помощью Apple, интерфейс подтвердил наличие сгруппированного идентификатора com.myname.web, связанного с com.myname.dev, для которого был создан ключ.
- Я подтвердил с помощью console.log, что закрытый ключ действительно находится на пути, переданном в качестве параметра.
- преобразовал файл .p8 в base64, а затем обратно в UTF-8 в попытке использовать строку для privateKeyString
- успешно реализовал Apple Oauth несколько раз в прошлом, используя паспорт-яблоко
На этот раз по какой-то причине auth просто не работает.
Если я устанавливаю clientID в качестве идентификатора приложения, а не службы, я получаю
invalid_request
Invalid web redirect url.
вместо invalid_client
Мы высоко ценим любые советы по отладке. Спасибо.
РЕДАКТИРОВАТЬ №1:
Я немного углубился в пакет паспорт-яблоко, чтобы выяснить, не противоречит ли что-либо документам Apple в отношении генерации токенов, но поток никогда не достигает этой части, указывая на то, что что-то идет не так с фактической конфигурацией в консоли Apple и с тем, что я пытаюсь для использования в моем проекте.
РЕДАКТИРОВАТЬ №2 2 созданных мной идентификаторов приложений всегда выдают неправильный uri перенаправления, потому что они не являются идентификаторами службы, поэтому я не могу настроить redirect_uri, это изменится, если это необходимо, если я передам undefined как redirect_uri.
Вместо этого один из идентификаторов приложений выдает только недопустимый client_id, независимо от того, передаю ли я undefined или хорошее значение для redirect_uri.
РЕДАКТИРОВАТЬ # 3 Пройдя полную ваниль через процесс потока кода OAuth, просто создал URL-адрес и перенаправил его пользователя, ошибка этого метода согласуется с тем, что происходит при использовании модуля паспорта-яблока.
const url = new URL("https://appleid.apple.com/auth/authorize");
url.searchParams.append("state", "fdbd287b1f");
url.searchParams.append("response_type", "code");
url.searchParams.append("scope", "name email");
url.searchParams.append("response_mode", "form_post");
url.searchParams.append(
"redirect_uri",
"https://raiseitupdev.com/auth/apple/redirect",
);
url.searchParams.append("client_id", "com.myname.web");
return res.redirect(url.toString());