ホームページ ウェブフロントエンド jsチュートリアル vue WeChat認証ログインの操作方法

vue WeChat認証ログインの操作方法

May 25, 2018 pm 02:25 PM
承認する 操作する ログイン

今回は、vue WeChat 認証ログインの操作方法と、vue WeChat 認証ログインを操作する際の注意事項について説明します。以下は実際のケースです。見てみましょう。

Background

vue は、WeChat 認証のためにフロントエンドとバックエンドの開発を分離します

Scenario

アプリは、ユーザーがページをクリックすると、WeChat でログインを認証します。ユーザー情報を取得するため。

問題: 固定の h5 アプリケーションのホームページがありません。承認後のリダイレクト URL はパラメータがあり、非常に長いです

私は開発過程でさまざまな方法を試してきましたが、毎回それは私の気分を説明するのに十分ではありません。井戸に飛び込む体験。

1. 最初に、フロントエンドが WeChat 接続をリクエストし、コードを返し、そのコードを使用してバックエンド インターフェイスにトークンを取得します。その後、他の人のブログでこの方法は良くないと言っているのを見ました。バックエンド インターフェイスを直接リクエストし、バックエンドで URL を返すのが最善です。ジャンプするには、バックグラウンドで URL を返し、フォアグラウンドでジャンプする最も伝統的な方法を使用しました。

async ReturnGetCodeUrl() {
  let {
    data
  } = await getWxAuth({});
  if (data.status == 200) {
    window.location.href = data.url;
    // 返回的结果
    // redirect_uri重定向的url是后台的地址,后台就是可拿到code,获取token
    // https://open.weixin.qq.com/connect/oauth2/authorizeappid=xxxxxxxxxxxxxxxxxx&redirect_uri=***url***&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect
    
  }
 },
ログイン後にコピー

2. WeChat の認証には何度もホップする必要があり、インターネットから解決策を確認したところ、結局のところ、リンクに戻るのが面倒でした。リンク自体を redirect_uri パラメータとして使用しました。おそらく次のようになります

https://open.weixin.qq.com/connect/oauth2/authorizeappid=xxxxxxxxxxxxxxxxxx&redirect_uri=*www.admin?http://www.xxx。 com/h5/product*&response_type=code&scope =snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect

ただし、フロントエンド リンクは次のようになり、パラメーターがあり、非常に長いです。 WeChatは私がこんなに醜いことを受け入れられないかもしれません。 /(ㄒoㄒ)/~~

http://www.xxx.com/h5/product?id=6RedfM5O4xeyl0AmOwmyipkHr8AQCv-hYXZVAIFTwDXOsWSKqgu3VaCmaKserBnacvWuzO3Zwdf8y%2F2K2lvqkluV6Ane4LCAKyPU2 tPAPj%2FMF6F6xkzp27GqqpNya7HbdEA34qGQJvHIA9tlIMkeEWid1112b8oZuP3FQBwU%2F%2FMaSrovzQP6LlzWamyPnv0vMizu8uh0ItpJOQUV1m%2FtemF3U9KuHo8rXCw%3D

ついに諦めたこの解決策について

3. フロントエンドアドレスをリダイレクトしてトークンを取得する方法を検討します

次のステップは、まだ多くのバグがあるので、後で最適化します。または、main.js の

routing

グローバル フックを変更して、ローカルに user_token があるかどうかを確認します。これは、トークンがなく、現在のルートが作成者 (ページ) でない場合に返されます。認証用に特別に設計されています)、現在の URL (www.xxx.com/h5/product?id=6RedfM5O4xeyl0AmOwm など) を保存し、作成者を入力します。ローカルにトークンがある場合、つまり、ユーザーが以前にトークンを承認していて、vuex にユーザー情報がない場合、ユーザー情報を取得して vuex に保存します。ここで発生する問題は、トークンが期限切れになることです。次に、ローカルの user_token を削除します。 window.localStorage.removeItem("user_token"); この時点で、ページ router.go(0) を更新します。トークンがない場合は、もう一度実行します。

 router.beforeEach((to, from, next) => {
   //  第一次进入项目
   let token = window.localStorage.getItem("user_token");
   
   if (!token && to.path != "/author") {
    window.localStorage.setItem("beforeLoginUrl", to.fullPath); // 保存用户进入的url
    next("/author");
    return false;
   } else if (token && !store.getters.userInfo) {
   //获取用户信息接口
    store
     .dispatch("GetUserInfo", {
      user_token: token
     })
     .catch(err => {
      window.localStorage.removeItem("user_token");
      router.go(0);
      return false;
     });
   }
   next();
  });
ログイン後にコピー
以下は author.vue に入るロジックです。最初に author (www.xxxx.com/h5/author) に入るとき、リンクにトークン パラメータがあるかどうかを確認し、トークン パラメータがない場合は WeChat 認証にジャンプします。その後、バックグラウンドがリダイレクトして次のようなトークンを運びます: www.xxxx.com/h5/author?token=xxxxxxxxx&msg=200
<template>
  <p>
授权中。。。
  </p>
</template>
<script>
 
  import {
   getWxAuth
  } from '@/service/getData'
  import {
   GetQueryString 
  } from '@/utils/mixin';
  export default {
   data() {
     return {
      token: '',
     };
   },
   computed: {
    
   },
   created() {
     this.token = window.localStorage.getItem("user_token");
     //判断当前的url有没有token参数,如果不存在那就跳转到微信授权的url
     //就是前面说的ReturnGetCodeUrl方法
 
     if (!GetQueryString("token")) {
      this.ReturnGetCodeUrl();
     } else {
      //如果有token,如http://www.xxxx.com/h5/author?token=xxxxxxxxx&msg=200,这里的参数就是后台重定向到前台http://www.xxxx.com/h5/author,并携带的参数。这样就可以拿到我们想要的token了
      //判断一下后台返回的状态码msg,因为可能出现微信拿不到token的情况
      let msg = GetQueryString("msg")
      if (msg = 200) {
        this.token = GetQueryString("token");
        //存储token到本地
        window.localStorage.setItem("user_token", this.token);
        //获取beforeLoginUrl,我们的前端页面
        let url = window.localStorage.getItem("beforeLoginUrl");
        //跳转
        this.$router.push(url);
        //删除本地beforeLoginUrl
        removeLocalStorage("beforeLoginUrl");
      }else{
      //msg不是200的情况,可能跳到404的错误页面
      }
     }
   },
   methods: {
    
     async ReturnGetCodeUrl() {
      let {
        data
      } = await getWxAuth({});
      if (data.status == 200) {
       
        window.location.href = data.url;
      }
     },
     
   },
   watch: {},
   components: {},
   mounted: function () {}
  }
</script>
<style lang=&#39;scss&#39; scoped>
</style>
ログイン後にコピー
GetQueryStringメソッドmixin.js

export const GetQueryString = name => {
 var url = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
 var newUrl = window.location.search.substr(1).match(url);
 if (newUrl != null) {
  return unescape(newUrl[2]);
 } else {
  return false;
 }
};
ログイン後にコピー
これを読んだ後、あなたはメソッドをマスターしたと思います。この記事の事例については、オンラインの php 中国語のその他の関連記事に注目してください。

推奨読書:

vue の select 組み込みコンポーネントを使用する手順の詳細な説明

React を使用する場合は再レンダリングを避ける

以上がvue WeChat認証ログインの操作方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PlayStation Network へのログインは失敗しますが、インターネット接続は成功します PlayStation Network へのログインは失敗しますが、インターネット接続は成功します Feb 19, 2024 pm 11:33 PM

一部のプレイヤーは、発売時に PS4 または PS5 で奇妙な問題に遭遇しています。たとえば、PlayStation Network へのログインが失敗しても、インターネット接続は正常である場合に、これが原因で問題が発生する可能性があります。ログイン情報を入力するときにエラーが発生し、PSParty チャットに参加できない場合があります。同様の問題が発生した場合は、このガイドが問題の解決に役立つ可能性があります。 PlayStationNetworkSign-in の横に、「AnErrorHaveAreAre」というエラー メッセージが表示され、「失敗」と表示されます。 IP アドレス、インターネット接続、接続速度の取得などの他のパラメーターは正常に完了しました。では、ここで何が問題になるのでしょうか?あなたに仕事をあげます

AADSTS7000112、アプリケーションが無効になっている Microsoft アカウントのログイン エラーを修正 AADSTS7000112、アプリケーションが無効になっている Microsoft アカウントのログイン エラーを修正 Feb 19, 2024 pm 06:27 PM

AADSTS7000112 エラーにより、Microsoft アカウントを使用してアプリにログインできなくなり、ご不便をおかけする場合があります。この記事では、この問題を解決し、通常のログイン エクスペリエンスを復元するのに役立つ解決策を紹介します。ログイン: 申し訳ありませんが、ログインできません。 AADSTS7000112: アプリケーションが無効になりました。幸いなことに、いくつかの簡単な提案に従うことでエラーを修正できます。エラーコード AADSTS7000112 とは何ですか?エラー コード AADSTS7000112 は、Microsoft の Azure Active Directory への接続に問題があることを示します。通常、これは、ログインしようとしている Microsoft アプリケーションがブロックされていることが原因である可能性があります。

PyCharm の使用法チュートリアル: 操作の実行方法を詳しく説明します PyCharm の使用法チュートリアル: 操作の実行方法を詳しく説明します Feb 26, 2024 pm 05:51 PM

PyCharm は非常に人気のある Python 統合開発環境 (IDE) であり、Python 開発をより効率的かつ便利にするための豊富な機能とツールを提供します。この記事では、PyCharm の基本的な操作方法を紹介し、読者がすぐに使い始めてツールの操作に習熟できるように、具体的なコード例を示します。 1. PyCharm をダウンロードしてインストールします。 まず、PyCharm 公式 Web サイト (https://www.jetbrains.com/pyc) にアクセスする必要があります。

sudo とは何ですか?なぜ重要ですか? sudo とは何ですか?なぜ重要ですか? Feb 21, 2024 pm 07:01 PM

sudo (スーパーユーザー実行) は、一般ユーザーが root 権限で特定のコマンドを実行できるようにする、Linux および Unix システムの重要なコマンドです。 sudo の機能は主に次の側面に反映されています。 権限制御の提供: sudo は、ユーザーにスーパーユーザー権限を一時的に取得することを許可することで、システム リソースと機密性の高い操作を厳密に制御します。一般のユーザーは、必要な場合にのみ sudo を介して一時的な権限を取得できるため、常にスーパーユーザーとしてログインする必要はありません。セキュリティの向上: sudo を使用すると、日常的な操作中に root アカウントの使用を回避できます。すべての操作に root アカウントを使用すると、誤った操作や不注意な操作には完全な権限が与えられるため、予期しないシステムの損傷につながる可能性があります。そして

企業 WeChat メールにログインする方法 企業 WeChat メールにログインする方法 Mar 10, 2024 pm 12:43 PM

Enterprise WeChat の電子メール アドレスにログインするにはどうすればよいですか? Enterprise WeChat APP で電子メール アドレスにログインできますが、ほとんどのユーザーは電子メール アドレスにログインする方法がわかりません。次は、その方法に関するグラフィック チュートリアルです。興味のある方は編集者が用意したEnterprise WeChatのメールアドレスにログインして、ぜひ覗いてみてください! Enterprise WeChat 使用チュートリアル Enterprise WeChat メールへのログイン方法 1. まず Enterprise WeChat APP を開き、メイン ページの下部にある [ワークベンチ] に移動し、クリックして特別なエリアに移動します; 2. 次に、ワークベンチでエリアで、[Enterprise Mailbox] サービスを選択します; 3. 次に、企業メール機能ページに移動し、下部の [バインド] または [メールの変更] をクリックします; 4. 最後に、ページで [QQ アカウント] と [パスワード] を入力します以下に示すように、メールにログインします。

Linux Deployの操作手順と注意事項 Linux Deployの操作手順と注意事項 Mar 14, 2024 pm 03:03 PM

LinuxDeploy の操作手順と注意事項 LinuxDeploy は、ユーザーが Android デバイスにさまざまな Linux ディストリビューションを迅速に展開できるようにする強力なツールで、ユーザーはモバイル デバイスで完全な Linux システムを体験できます。この記事では、LinuxDeploy の操作手順と注意事項を詳しく紹介し、読者がこのツールをより効果的に使用できるように、具体的なコード例を示します。操作手順: Linux のインストールDeploy: まず、インストールします

GeForce Experience のログインがフリーズする [修正] GeForce Experience のログインがフリーズする [修正] Mar 19, 2024 pm 06:30 PM

この記事では、Windows 11/10 での GeForceExperience ログイン クラッシュの問題を解決する方法を説明します。通常、これは、不安定なネットワーク接続、破損した DNS キャッシュ、古いまたは破損したグラフィックス カード ドライバなどが原因で発生する可能性があります。 GeForceExperience のログイン ブラック スクリーンを修正する 開始する前に、必ずインターネット接続とコンピューターを再起動してください。場合によっては、問題の原因が一時的なものである可能性があります。 NVIDIA GeForce Experience のログインの黒い画面の問題がまだ発生している場合は、次の提案を検討してください。 インターネット接続を確認する 別のインターネット接続に切り替える

Win10 起動パスワードの F2 キーを押すのを忘れた場合の対処方法 Win10 起動パスワードの F2 キーを押すのを忘れた場合の対処方法 Feb 28, 2024 am 08:31 AM

おそらく多くのユーザーは、自宅に未使用のコンピュータを複数台持っており、長期間使用していなかったためにパワーオン パスワードを完全に忘れてしまったため、パスワードを忘れた場合の対処方法を知りたいと考えています。それでは、一緒に見てみましょう。 win10 起動パスワードの F2 キーを押し忘れた場合の対処方法 1. コンピューターの電源ボタンを押し、コンピューターの電源を入れるときに F2 キーを押します (コンピューターのブランドによって、BIOS に入るボタンが異なります)。 2. BIOS インターフェイスで、セキュリティ オプションを見つけます (コンピューターのブランドによって場所が異なる場合があります)。通常は上部の設定メニューにあります。 3. 次に、「SupervisorPassword」オプションを見つけてクリックします。 4. この時点で、ユーザーは自分のパスワードを確認できると同時に、その横にある [有効] を見つけて [無効] に切り替えることができます。

See all articles