AppleAuth — это очень простая библиотека для .NET, которая инкапсулирует логику взаимодействия с REST API Apple для входа в систему Apple. Основная цель — упростить реализацию входа через Apple для любого веб-приложения.
Чтобы установить пакет, выполните следующую команду в консоли диспетчера пакетов:
PM > Install - Package AppleAuth . NETИли просто установите пакет с помощью диспетчера пакетов Nuget. Проект можно найти здесь: Ссылка на NuGet.
Чтобы использовать функцию «Вход через Apple», вам необходимо зарегистрироваться в программе Apple Developer Program. После регистрации в программе перейдите в раздел «Справка по учетной записи разработчика» и выберите «Настроить возможности приложения» > «Войти через Apple». Там вы можете найти информацию о настройке входа с Apple для вашего приложения.
Вы также можете просмотреть мою публикацию в блоге, чтобы получить дополнительную информацию о настройке параметров вашей учетной записи разработчика, реализующих вход с Apple.
Далее вам необходимо настроить свою веб-страницу для входа в систему с помощью Apple. Следуйте рекомендациям официальной документации. Вы также можете перейти по этой ссылке, чтобы узнать, как настроить стили кнопок.
Если вы развертываете свое приложение в веб-приложении Azure, обязательно добавьте следующий параметр: WEBSITE_LOAD_USER_PROFILE = 1 , чтобы IIS мог получить доступ к хранилищу закрытых ключей в хранилище учетных записей пользователей. Вы можете применить это на портале Azure в разделе «Конфигурация» > «Параметры приложения» или запустить следующую команду в Cloud Shell:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1 .
Также важно отметить, что этот параметр доступен только для необщих ценовых уровней.
Если вы развертываете свое приложение на собственном веб-сервере с Microsoft IIS, вам необходимо включить «Загрузить профиль пользователя» в разделе «Дополнительные настройки» в вашем пуле приложений. В противном случае вы получите исключение CryptographicException, говорящее: «Системе не удается найти указанный файл».
AppleAuthProvider.cs Создайте новый экземпляр AppleAuthProvider , передайте необходимые параметры, и все готово. Используйте метод GetAuthorizationToken , чтобы получить токен авторизации от Apple; Используйте метод GetRefreshToken , чтобы проверить, использует ли пользователь «Вход через Apple» для входа в вашу систему; Используйте метод GetButtonHref , чтобы получить строку запроса для кнопки «Войти с помощью Apple».
После того, как пользователь нажмет кнопку «Войти через Apple» на вашей странице, он будет перенаправлен на https://appleid.apple.com/. После того, как они предоставят свои учетные данные, Apple выполнит запрос POST на URL-адрес, который вы указали в качестве URL-адреса перенаправления. Вы можете обработать запрос, используя InitialTokenResponse.cs . Чтобы получить токен авторизации, вам необходимо сначала создать новый экземпляр AppleAuthProvider с необходимыми параметрами. После этого просто вызовите метод GetAuthorizationToken(), передав code из вашего объекта InitialTokenResponse и вашего закрытого ключа. Вот пример реализации на C#:
[ HttpPost ]
public async Task HandleResponseFromApple ( AppleAuth . TokenObjects . InitialTokenResponse response )
{
string privateKey = System . IO . File . ReadAllText ( "path/to/file.p8" ) ;
AppleAuth . AppleAuthProvider provider = new AppleAuth . AppleAuthProvider ( "MyClientID" , "MyTeamID" , "MyKeyID" , "MyRedirectUrl" , "SomeState" ) ;
AppleAuth . TokenObjects . AuthorizationToken authorizationToken = await provider . GetAuthorizationToken ( response . code , privateKey ) ;
} Имейте в виду, что токены, возвращаемые Apple, недолговечны, поэтому вам следует создать сеанс или пользователя в вашей системе, используя возвращенный объект AppleAuth.TokenObjects.AuthorizationToken . После этого вы можете проверить, вошел ли пользователь в систему, используя «Войти через Apple», получив токен обновления с помощью метода GetRefreshToken :
[ HttpPost ]
public async Task < bool > IsUserUsingAppleID ( )
{
string privateKey = System . IO . File . ReadAllText ( "path/to/file.p8" ) ;
AppleAuth . AppleAuthProvider provider = new AppleAuthProvider ( "MyClientID" , "MyTeamID" , "MyKeyID" , "https://myredirecturl.com/HandleResponseFromApple" , "SomeState" ) ;
AppleAuth . TokenObjects . AuthorizationToken refreshToken = await provider . GetRefreshToken ( authorizationToken . RefreshToken , privateKey ) ;
return refreshToken != null ;
}Вы можете внести свой вклад в проект и сделать его лучше. При внесении вклада, пожалуйста, старайтесь сохранять строго профессиональное, уважительное и дружелюбное отношение. Также обязательно сообщите владельцам этого репозитория об изменении, которое хотите внести, через проблему или любым другим способом.
У нас нет каких-либо строгих правил по созданию запросов на включение, но вы можете использовать уже известную схему GitHub для получения общих рекомендаций.
Этот проект лицензируется по лицензии MIT – подробности см. на LICENSE.md.