小さなプログラムを開発するとき、多くの場合、ユーザーからいくつかの許可を取得する必要があります。たとえば、直接ログインするためのユーザー情報の取得、測位のための地理的位置の取得などです。しかし、ユーザーが認証を拒否した場合はどうすればよいでしょうか?
ミニ プログラムでは、ユーザー権限の取得は、特定の操作を実行するために必要な前提条件です。例えば、ミニプログラムに入る際にユーザー情報を取得し、自身のプラットフォーム上のアカウントに対応するunionIdを使ってログインするため、ユーザーがアカウントのパスワードを入力する必要がなくなるのが良いですね。
ユーザー認証を必要とする wx.getUserInfo や wx.getLocation などの API を呼び出すと、ミニ プログラムはユーザーが認証を選択できるようにするボックスをポップアップ表示します。
ユーザーが許可を選択すると、ミニ プログラムでは、次回ミニ プログラムに入ることができません。再度尋ねて、ユーザーの承認を直接取得します (ミニ プログラムを削除してから入る場合を除く)。ここでの問題は、ユーザーが拒否をクリックした後、関連する承認が取得されず、ミニ プログラムに入るときに一定期間、このポップアップ ボックスが再度表示されなくなることです。
ユーザーエクスペリエンスとプライバシー保護の観点から、ミニプログラムは許可なく使用(または体験)することが最善です。ただし、一部の種類のミニ プログラムでは、使用するためにユーザー情報が必要です。ここでは簡単な解決策を紹介します。
例として、直接ログインするためのユーザー情報を取得します。ミニ プログラムに入る最初のページとして認証ページを追加し、ユーザー データとログインを取得します。デフォルトでは、何も表示されないか、ブート ページとして使用できます。
ユーザー情報を取得するには、wx.login と wx.getUserInfo の 2 つの API を使用する必要があります。これら 2 つの API の詳細については、公式ドキュメントを確認してください。
ログインメソッドを追加します。コードは次のとおりです:
//登录 login: function () { var that = this if (typeof success == "function") { this.data.getUserInfoSuccess = success } wx.login({ success: function (res) { var code = res.code; wx.getUserInfo({ success: function (res) { //平台登录 }, fail: function (res) { that.setData({ getUserInfoFail: true }) } }) } }) }
ドアツードアコードが失敗に達した場合、ユーザーが認可を取得する際に拒否をクリックしたと考えることができます。 getUserInfoFail が true の場合、次のような承認を取得するためのボタンを表示できます。
次に、別の API、wx.openSetting を使用して、アプレットの承認設定にジャンプします。 Android のインターフェースは次のようになります:
認証ボタンをクリックすると、ここにジャンプし、ユーザーはホームページに入る前に認証できるようになります。それ以外の場合は、認証ページに留まります。
しかし、小さな問題がまだあります。この API は基本ライブラリ 1.1.0 でのみ使用できるため、互換性が必要です:
したがって、最終的なジャンプ許可コードは次のとおりです:
//跳转设置页面授权 openSetting: function () { var that = this if (wx.openSetting) { wx.openSetting({ success: function (res) { //尝试再次登录 that.login() } }) } else { wx.showModal({ title: '授权提示', content: '小程序需要您的微信授权才能使用哦~ 错过授权页面的处理方法:删除小程序->重新搜索进入->点击授权按钮' }) } }
幸いなことに、1.1 .0 は以前のバージョンであり、現在は 1.3.0 です。
同様の処理方法で他の権限を取得することも可能
関連記事:
同期リクエスト認可を実現するWeChatアプレットのインスタンス分析
以上がWeChat アプレットのキャンセル承認の問題: ユーザーが承認を拒否しました。どうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。