1. appIDの申請と設定1. appidの取得方法WeChatパブリックプラットフォームにログイン 公式サイトリンク: https://mp.weixin.qq.com/ 初めてご利用の場合は、登録ボタンをクリックして登録する必要があります。アカウントをお持ちの場合は、スキャンしてログインするだけです。 公式サイトミニプログラムリンク: 2. AppIDの設定manifest.jsonに申請したWeChatアプレットIDを入力してください 2. 基本的なユーザーデータの取得
2.1. ユーザー情報の取得uni.getUserProfileを使用してユーザー認証を要求し、ユーザー情報を取得することができます。また、uni.getUserInfoを使用して、 認証が成功すると、取得されたユーザー情報は userInfo に保存されます。 ページセクション: <button class="login-btn" type="primary" @click="getUserInfo"> WeChatユーザーはワンクリックでログインできます</button> js部分: メソッド: { ユーザー情報を取得する() { uni.getUserInfo({ プロバイダー: 'weixin'、 成功: (res) => { console.log('getUserInfo', res); }, }); }, } 取得したユーザー基本データ(openid=》WeChatユーザー固有識別子なし) 2.2. ユーザー情報の取得 2uni.getUserInfoを使用してユーザー認証を要求し、ユーザー情報を取得できます。 ページは同じですが、js 部分は次のとおりです。 ユーザー情報を取得する() { uni.getUserProfile({ 説明: 'ログイン後にデータを同期できます', 言語: 'zh_CN', 成功: (res) => { console.log('getUserProfile', res); }, }); }, 取得したユーザー基本データ(openid=》WeChatユーザー固有識別子なし) 要約: 2 つの API uni.getUserProfile と uni.getUserInfo によって取得されるユーザー データは基本的に同じであり、どちらにも openid=》WeChat ユーザーの一意の識別子がありません。 3. ログインAPIを呼び出す3.1. ログインAPI uni.login メソッドを使用し、プロバイダー パラメータとして 'weixin' を入力し、成功した戻り値で errMsg = "login:ok" の場合、成功を意味します。 3.2. サンプルコードuni.ログイン({ プロバイダー: 'weixin'、 成功: (res) => { console.log('res-login', res); コード: console.log('コード', res.コード); res.errMsg == 'ログイン:ok'の場合{ //TODO コードを取得し、コード パラメータを使用してバックエンド インターフェイスを呼び出します} 4. 固有の識別情報の取得4.1. 公式ウェブサイトのドキュメント公式ウェブサイトのドキュメントでは、取得したコードを使用してWeChatログインインターフェースにopenidとsession_keyの取得を要求しています。 4.2. インターフェースの説明リクエストメソッド: GET
5. ユーザーをログインにバインドする
5.1. コード例(パッケージ化されていないもの)フロントエンド部分: /** * * ユーザー情報を取得する */ ユーザー情報を取得する() { // ローディングボックスを表示する uni.showLoading({ タイトル: 「読み込み中」 }); uni.getUserProfile({ 説明: 'ログイン後にデータを同期できます', 成功: async (obj) => { コンソールにログ出力します。 //アクションを呼び出してログイン インターフェイスを要求します // await this.login(obj); uni.ログイン({ プロバイダー: 'weixin'、 成功: (res) => { console.log('res-login', res); コード: console.log('コード', res.コード); res.errMsg == 'ログイン:ok'の場合{ ユニ 。リクエスト({ URL: 'http://127.0.0.1:8080/wxh5/wx/user/' + 'wx55822xxxx75e422' + '/ログイン/'、 データ: { コード: this.code, }, }) .then((res) => { //openidとsession_kを取得した後、独自のロジックconsole.log('Authorized login', res[1].data); コンソールにログ出力します。 コンソールにログ出力します。 // 何かを行う................ }); コンソールにログ出力します。 } }, }); }, 失敗: () => { uni.showToast({ タイトル: 「認証がキャンセルされました」 アイコン: 'エラー'、 マスク: true、 }); }, 完了: () => { //読み込みを非表示 uni.hideLoading(); }, }); }, バックエンド @GetMapping("/ログイン") パブリック文字列ログイン(@PathVariable 文字列 appid, 文字列コード) { if (StringUtils.isBlank(コード)) { 「空の jscode」を返します。 } 最終的な WxMaService wxService = WxMaConfiguration.getMaService(appid); 試す { WxMaJscode2SessionResult セッション = wxService.getUserService().getSessionInfo(コード); セッションキーを取得します。 セッションIDを取得する //TODO は独自のロジックを追加し、ビジネス関連のデータを関連付けることができます。 return JsonUtils.toJson(session); } キャッチ (WxErrorException e) { this.logger.error(e.getMessage(), e); e.toString() を返します。 } } 5.2. コード例(パッケージング)/** * * ユーザー情報を取得する */ ユーザー情報を取得する() { // ローディングボックスを表示する uni.showLoading({ タイトル: 「読み込み中」 }); uni.getUserProfile({ 説明: 'ログイン後にデータを同期できます', 成功: async (obj) => { // this.userInfo = obj.userInfo; // ログインを要求するアクションを呼び出すインターフェース uni.login({ プロバイダー: 'weixin'、 成功: async (res) => { コード: // console.log('コードを取得するにはログインしてください', res.code); res.errMsg == 'ログイン:ok'の場合{ this.loginAuth({を待つ ユーザープロファイル: obj, アプリID: 'wx558xxxxxxxxxxxxxxx2', コード: this.code, }); } }, }); }, 失敗: () => { uni.showToast({ タイトル: 「認証がキャンセルされました」 アイコン: 'エラー'、 マスク: true、 }); }, 完了: () => { //読み込みを非表示 uni.hideLoading(); }, }); }, }, ユーザー.js /** * WeChatユーザー認証ログイン、appidとコードパラメータの伝達、バックエンドインターフェースの呼び出しによるOpenidの取得 */ エクスポート関数 loginAuth(data) { リクエストを返す({ url: '/wx/user/' + data.appid + '/login/', データ: { コード: data.code、 }, }); } vuex ユーザーモジュール (user.js) // WeChat ユーザーがログインを許可し、appid と code パラメータを渡し、バックエンド インターフェイスを呼び出して Openid を取得します。 非同期ログイン認証(コンテキスト、データ) { console.log('データ', データ); ユーザープロファイルを作成します。 const { コンテンツ: res } = loginAuthを待機します({ アプリID: データ.アプリID、 コード: data.code、 }); // バックエンドから送信された JSON オブジェクトを解析します。const userAuthInfo = JSON.parse(res); 定数 openid = userAuthInfo.openid; // console.log('sessionKey', userAuthInfo.sessionKey); コンソールにログ出力します。 // vuexに保存してコミットする this.commit('user/setOpenid', userAuthInfo.openid); this.commit('user/setUserInfo', JSON.parse(userInfo.rawData)); }, 6. プロジェクトのオープンソースアドレス6.1. フロントエンドアプレット チョックイン 6.2. バックエンドweixin-java-ミニアプリ uni-app WeChat アプレット認証ログインに関するこの記事はこれで終わりです。より関連性の高い uni-app WeChat アプレット認証ログイン コンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。皆様が今後も 123WORDPRESS.COM を応援してくれることを願っています。 以下もご興味があるかもしれません:
|
>>: CSS3 で半透明の背景画像と不透明なコンテンツを実現する方法の例
接続は、実際の外部キー(人工的に作成された 2 つのテーブル間の対応関係を指します。対照的に、FOR...
背景このバグは滾動條占據空間ことで発生していました。いくつかの情報を確認して、ようやく解決しました。...
この記事では、例を使用して、MySQL ストアド プロシージャを作成 (CREATE PROCEDU...
div で background-color と background-image を同時に設定する...
目次1. ページの概要2. 下限と上限3. ページディレクトリを使用する4. ページの実際の外観4....
この記事では、フォームデータの非同期取得を実現するためのJavaScriptの具体的なコードを例とし...
Linux システムでは、chmod コマンドと chown コマンドの両方を使用して権限を設定でき...
適応型レイアウトは、実際のアプリケーションでますます一般的になっています。今日は、主にフローティング...
MySQL データベース インデックスが B+ ツリーを使用する理由をさらに分析する前に、データ構...
目次前述のVARCHAR型VARCHAR適用可能な状況CHAR型テストVARCHAR(5)とVARC...
表ラベルの構成HTML 内の表は <table> タグで構成されており、ブラウザはタグを...
Elasticsearch 6.8 以降、無料ユーザーは X-Pack のセキュリティ機能を使用でき...
さっそく、レンダリングを見てみましょうソースコードは以下のとおりです <!DOCTYPE ht...
目次1. 需要方法1方法2方法3 2. 実装3. 問題解決質問1: トークンの複数回の更新を防ぐ方法...
相対幅と絶対幅が競合する場合のdivソリューション概要: 一般的に、絶対幅を使用する場合は px を...