AppleAuth は、Apple でサインインするために Apple の REST API と通信するためのロジックをカプセル化する .NET 用の非常にシンプルなライブラリです。主な目標は、あらゆる Web アプリケーションで Apple でサインインを簡単に実装できるようにすることです。
パッケージをインストールするには、パッケージ マネージャー コンソールで次のコマンドを実行します。
PM > Install - Package AppleAuth . NETまたは、Nuget パッケージ マネージャーを使用してパッケージをインストールするだけです。プロジェクトはここにあります: NuGet へのリンク
「Apple でサインイン」を使用するには、Apple Developer Program に登録する必要があります。プログラムに登録したら、開発者アカウントのヘルプに移動し、アプリの機能の構成 > Apple でサインインに移動します。ここでは、アプリの「Apple でサインイン」を構成するための情報を見つけることができます。
Apple でサインインを実装する開発者アカウントの設定の詳細については、私のブログ投稿をチェックしてください。
次に、Web ページを Apple でサインインできるように設定する必要があります。公式ドキュメントのガイドラインに従ってください。ボタンのスタイルを設定する方法については、このリンクを参照してください。
アプリを Azure Web アプリにデプロイする場合は、必ず次の設定を追加してください: WEBSITE_LOAD_USER_PROFILE = 1これにより、IIS はユーザー アカウント ストアの下の秘密キー ストレージにアクセスできます。これは、Azure portal の [構成] > [アプリケーション設定] から適用することも、Cloud Shell で次のコマンドを実行することもできます。
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1 。
この設定は、非共有の価格レベルでのみ使用できることに注意することも重要です。
Microsoft IIS を実行している独自の Web サーバーにアプリをデプロイする場合は、アプリケーション プールの [詳細設定] で [ユーザー プロファイルの読み込み] を有効にする必要があります。そうしないと、「指定されたファイルがシステムで見つかりません」という CryptographicException が発生します。
AppleAuthProvider.csの使用AppleAuthProviderの新しいインスタンスを作成し、必要なパラメータを渡すと準備完了です。 GetAuthorizationTokenメソッドを使用して Apple から認証トークンを取得します。 GetRefreshTokenメソッドを使用して、ユーザーがまだ「Apple でサインイン」を使用してシステムにサインインしているかどうかを確認します。 GetButtonHrefメソッドを使用して、「Apple でサインイン」ボタンのクエリ文字列を取得します。
ユーザーがページ上の「Apple でサインイン」ボタンをクリックすると、https://appleid.apple.com/ にリダイレクトされます。ユーザーが資格情報を提供すると、Apple はリダイレクト URL として指定した URL に対して POST リクエストを作成します。 InitialTokenResponse.csを使用してリクエストを処理できます。認可トークンを取得するには、まず必要なパラメータを指定してAppleAuthProviderの新しいインスタンスを作成する必要があります。その後、GetAuthorizationToken() メソッドを呼び出して、 InitialTokenResponseオブジェクトと秘密キーからcode渡します。 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オブジェクトを使用してシステム内にセッションまたはユーザーを作成する必要があることに注意してください。その後、 GetRefreshTokenメソッドを使用してリフレッシュ トークンを取得することで、ユーザーが「Apple でサインイン」を使用してまだログインしているかどうかを確認できます。
[ 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 を参照してください。