誰かがHuaweiDeveloper Forumに投稿し、スタンドアロンアプリケーションのみがあり、サーバーがないと言っています。Huaweiアカウントのログイン機能を実装するにはどうすればよいですか?
まず、アカウントログインはOAuth2.0プロトコル標準とOpenIDConnectプロトコルに基づいていることを理解する必要があります。これは、承認コードとIDトークンの2つの承認済みログイン方法をサポートします。つまり、アプリケーションはアカウントのユーザーID認証情報を取得できます( IDトークン)またはユーザーの一時認証チケット(認証コード)により、ユーザーは安全にログインできます。
認証コードとは何ですか?
認証コードは1回限りの認証コードです。認証コードと割り当てられたAppSecretは、主にOAuthサーバーでの認証に使用されます。認証コードモードは一時的な認証チケットモードであり、独自のサーバーを備えたアプリケーションにのみ適しています。
IDトークンとは何ですか?
IDトークンは、ログインしたユーザーのID情報であり、ID情報の検証に使用される署名情報が含まれます。IDトークンモードは、ユーザーID認証情報のモードです。このモードは、スタンドアロンアプリケーションと独自のサーバーを備えたアプリケーションの両方に適しています。
次に、次の2つのログインモードを見てみましょう。
図のアクセストークンは、ユーザーリソースへのアクセスに使用されるトークンであり、キーに相当します。更新トークンは、古いアクセストークンの有効期限が切れた後に新しいアクセストークンを取得するために使用されるトークンです。
上記のプロセスに従って、ユーザーがログインするHuaweiアカウントを選択すると、アプリケーションはHMSSDKへのログイン要求を開始します。手順2〜5で、Huaweiアカウントは、ユーザーログイン認証インターフェースをプルアップします。インターフェースは、ログイン要求で運ばれる認証ドメインまたはスコープ情報に従って認証が必要なコンテンツをユーザーに明示的に通知し、ユーザーはクリックします。承認を確認します。手順7〜9、HUAWEI IDOAuthサーバーは認証コード情報を返します。ステップ10:アプリケーションクライアントは、認証コードをアプリケーションサーバーにアップロードします。ステップ11〜12で、アプリケーションサーバーは認証コードをアクセストークン、更新トークン、IDトークンおよびその他の情報と交換します。最後に、アプリケーションサーバーはアクセストークンを使用して、Huawei Account AuthorizationCenterからユーザーのopenIdおよびその他の情報を取得します。アクセストークンまたはIDトークンの有効期限が切れると、アプリケーションサーバーは更新トークンを使用して新しいアクセストークンとIDトークンの情報を取得できます。
IDトークンログイン
IDトークンのログインプロセスは次のとおりです。まず、ユーザーがHuaweiアカウントを選択してログインすると、アプリケーションはHMSSDKへのログイン要求を開始します。ステップ2-14で、Huaweiアカウントはユーザーログイン認証インターフェースをプルアップします。インターフェースは、ログイン要求で運ばれる認証ドメインまたはスコープ情報に従って認証が必要なコンテンツをユーザーに明示的に通知し、ユーザーはクリックします。承認を確認します。手順15〜17では、HMS SDKは認証後にIDトークンとその他の情報を直接返します。アプリケーションはIDトークンを取得した後、IDトークンを検証することで認証できます。IDトークンの検証については、ローカル検証またはアプリケーションサーバー検証を参照してください。
認証コードモードとIDトークンモードは異なります。認証コードモードはサーバーを使用するアプリケーションに適しています。AccessTokenはAuthCodeを介して取得されます。アプリケーションサーバーが要求されるたびに、アプリケーションサーバーはAccessTokenの有効性を確認して認証。IDトークンモードでは、アプリケーションプログラムがユーザーのIDトークン情報を直接取得し、アプリケーションを使用する場合、アプリケーションはIDトークンの有効性を検証することでローカルで認証を完了します。要約すると、アプリにクライアントしかない場合、IDトークンモデルを介してユーザー認証を実装できます。
IDトークンモデルの開発手順:
最初のステップは、HuaweiIdAuthParamsオブジェクトを作成することです
AccountAuthParams authParams = new AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM).setIdToken().createParams();
これは、Huaweiアカウント認証ログインパラメータのオブジェクトです。これには、ユーザーが選択したログイン方法、認証ドメイン情報、およびユーザーがサードパーティアプリケーションに付与する権限の範囲であるスコープが含まれます。このオブジェクトは、 HuaweiIdAuthParamsHelperオブジェクト、つまり、デフォルトのパラメーターで構成されるHuaweiIdAuthParamsオブジェクトを作成します。次に、setIdTokenメソッドを呼び出します。つまり、IDトークンモードを使用するように設定します。
2番目のステップは、HuaweiIdAuthServiceオブジェクトを作成することです
AccountAuthService service = AccountAuthManager.getService(MainActivity.this, authParams);
HuaweiIdAuthServiceは、HuaweiIdAuthParamsオブジェクトをパラメーターとして使用します。これは、サイレント承認、終了、承認のキャンセルなどのメソッドを定義します。getSignInIntentメソッドは、インテントオブジェクトを返します。インテントオブジェクトは、アクティビティが情報を送信するための媒体であり、承認されたアクティビティを開始するためのインテント情報が含まれています。クライアントの後続の操作は、承認ページのプルアップやログ記録など、このオブジェクトのAPIを介して完了する必要があります。 Huaweiアカウントから。
3番目のステップは、startActivityForResultを呼び出すことです。
startActivityForResult(service.getSignInIntent(), 8888);
HuaweiIdAuthService。getSignInIntent()メソッドで取得したインテント情報を使用してstartActivityForResultメソッドを呼び出し、ユーザー認証ページを起動します。
4番目のステップは、onActivityResultを呼び出して、ログイン結果からアカウント情報を取得することです。
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
//授权登录结果处理,从AuthAccount中获取ID Token
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 8888) {
Task<AuthAccount> authAccountTask = AccountAuthManager.parseAuthResultFromIntent(data);
if (authAccountTask.isSuccessful()) {
//登录成功,获取用户的帐号信息和ID Token
AuthAccount authAccount = authAccountTask.getResult();
Log.i(TAG, "idToken:" + authAccount.getIdToken());
//获取帐号类型,0表示华为帐号、1表示AppTouch帐号
Log.i(TAG, "accountFlag:" + authAccount.getAccountFlag());
} else {
//登录失败,不需要做处理,打点日志方便定位
Log.e(TAG, "sign in failed : " +((ApiException) authAccountTask.getException()).getStatusCode());
}
}
}
ユーザーが正常に承認されたら、onActivityResultメソッドでアカウント情報を取得できます。AccountAuthManager.parseAuthResultFromIntentメソッドは、インテントデータからユーザーログイン情報を取得するために使用されます。次のステップは、IDトークンの有効性を確認することです。
>>詳細については、Huawei DeveloperAllianceの公式ウェブサイトにアクセスしてください
>>開発ガイダンスドキュメントを入手する
>> Huaweiモバイルサービスオープンソースウェアハウスアドレス:GitHub、Gitee
私たちをフォローして、Huawei Mobile Servicesの最新の技術情報を初めて学びましょう〜