Heim  >  Artikel  >  Web-Frontend  >  vue springt zur Website eines Drittanbieters und gibt nach der Anmeldung Parameter zurück

vue springt zur Website eines Drittanbieters und gibt nach der Anmeldung Parameter zurück

WBOY
WBOYOriginal
2023-05-24 09:23:062021Durchsuche

Vue.js ist derzeit eines der beliebtesten Frameworks in der Frontend-Entwicklung und bietet eine einfache und effiziente Möglichkeit, interaktive Benutzeroberflächen zu erstellen. Bei der Entwicklung von Webanwendungen müssen Sie häufig mit Websites von Drittanbietern interagieren, z. B. mit OAuth2-autorisierter Anmeldung, Alipay-Zahlung usw. Diese Vorgänge führen zur Website des Drittanbieters und nach Abschluss des Vorgangs zurück zur ursprünglichen Anwendung. In diesem Artikel wird erläutert, wie Sie zur Anmeldung in Vue zu einer Website eines Drittanbieters springen und bei der Rückgabe von Parametern entsprechend vorgehen.

Zu einer Website eines Drittanbieters springen

Zuerst müssen wir in Vue einen Link zu einer Website eines Drittanbieters einfügen. Typischerweise verfügt dieser Link über einige Parameter wie redirect_uri, client_id usw., die zur Identifizierung der Anwendung und des Umleitungs-URI verwendet werden. Angenommen, wir möchten zu http://example.com/login springen, müssen wir das 3499910bf9dac5ae3c52d5ede7383485-Tag verwenden, um einen Link zu erstellen: redirect_uriclient_id 等用于标识应用程序和重定向 URI 的参数。假设我们希望跳转到 http://example.com/login,我们需要使用 3499910bf9dac5ae3c52d5ede7383485 标签构造一个链接:

<template>
  <div>
    <a href="http://example.com/login?redirect_uri={{redirect_uri}}&client_id={{client_id}}">
      跳转到第三方网站
    </a>
  </div>
</template>

在这个链接中,我们使用了 Vue 模板语法插入了两个参数 redirect_uriclient_id。这些参数需要事先定义并传入组件中。

接收返回参数

当用户完成第三方网站上的操作后,会被重定向回我们的应用程序。在这个过程中,第三方网站会在重定向链接的查询字符串中添加一些参数,例如 codestate 等。我们需要提取并处理这些参数,以完成后续的操作。

在 Vue 中处理查询字符串可以使用 vue-routerQuery 对象,它会自动提取 URL 查询参数,并将它们作为对象暴露给我们。假设我们在路由中定义了以下路由:

import VueRouter from 'vue-router';
import LoginCallback from './components/LoginCallback.vue';

const router = new VueRouter({
  routes: [
    {
      path: '/login/callback',
      component: LoginCallback
    }
  ]
});

我们可以在 LoginCallback 组件中通过 $route.query 来获取返回参数:

<template>
  <div>
    <p v-if="code">授权码: {{code}}</p>
    <p v-if="state">状态码: {{state}}</p>
  </div>
</template>

<script>
export default {
  name: 'LoginCallback',
  data() {
    return {
      code: this.$route.query.code,
      state: this.$route.query.state
    }
  }
}
</script>

在这个示例中,我们通过 data 方法将 $route.query 中的 codestate 属性挂载到组件的实例上,并在模板中使用了 v-if 来根据参数是否存在来控制显示。如果参数存在,我们会显示相应的值;如果参数不存在,那么不会显示任何内容。

在实际开发中,我们可能还需要进行一些额外的操作,比如将授权码提交给服务器进行验证、根据参数中的状态码来判断操作是否成功等。这些操作可以在组件的生命周期钩子函数中完成。例如,在 created 钩子函数中,我们可以使用 axios 库将授权码提交给服务器:

<script>
  import axios from 'axios';

  export default {
    name: 'LoginCallback',
    created() {
      if (this.code) {
        axios.post('/oauth/token', {
          grant_type: 'authorization_code',
          code: this.code,
          redirect_uri: 'http://localhost:8080/login/callback',
          client_id: 'my_client_id',
          client_secret: 'my_client_secret'
        }).then(response => {
          console.log(response.data);
        }).catch(error => {
          console.log(error);
        });
      }
    },
    data() {
      return {
        code: this.$route.query.code,
        state: this.$route.query.state
      }
    }
  }
</script>

在这个示例中,我们使用 axiosrrreee

In this Link: Wir haben die Vue-Vorlagensyntax verwendet, um zwei Parameter redirect_uri und client_id einzufügen. Diese Parameter müssen vorab definiert und an die Komponente übergeben werden.

Rückgabeparameter erhalten

Wenn der Benutzer den Vorgang auf der Website eines Drittanbieters abschließt, wird er zurück zu unserer Anwendung weitergeleitet. Während dieses Vorgangs fügt die Website des Drittanbieters einige Parameter zur Abfragezeichenfolge des Weiterleitungslinks hinzu, z. B. code, state usw. Wir müssen diese Parameter extrahieren und verarbeiten, um nachfolgende Vorgänge abzuschließen. 🎜🎜Um Abfragezeichenfolgen in Vue zu verarbeiten, können Sie das Query-Objekt des vue-routers verwenden, das automatisch URL-Abfrageparameter extrahiert und sie uns als Objekte zur Verfügung stellt. Angenommen, wir haben die folgende Route in der Route definiert: 🎜rrreee🎜 Wir können die Rückgabeparameter über $route.query in der Komponente LoginCallback abrufen: 🎜rrreee🎜In diesem Beispiel , mounten wir die Eigenschaften code und state in $route.query über die data in die Instanz der Komponente -Methode aktiviert und v-if in der Vorlage verwendet, um die Anzeige basierend darauf zu steuern, ob der Parameter vorhanden ist. Wenn der Parameter vorhanden ist, zeigen wir den entsprechenden Wert an. Wenn der Parameter nicht vorhanden ist, wird nichts angezeigt. 🎜🎜In der tatsächlichen Entwicklung müssen wir möglicherweise einige zusätzliche Vorgänge ausführen, z. B. den Autorisierungscode zur Überprüfung an den Server senden, anhand des Statuscodes in den Parametern beurteilen, ob der Vorgang erfolgreich ist usw. Diese Vorgänge können in der Lebenszyklus-Hook-Funktion der Komponente abgeschlossen werden. Beispielsweise können wir in der Hook-Funktion created die Bibliothek axios verwenden, um den Autorisierungscode an den Server zu übermitteln: 🎜rrreee🎜In diesem Beispiel verwenden wir axios code> Die Bibliothek sendet eine POST-Anfrage an den Server, um ein Zugriffstoken anzufordern. Wir packen die Parameter wie Autorisierungscode, Umleitungs-URI, Client-ID und Client-Geheimnis in die POST-Anfrage und verarbeiten sie in den Erfolgs- bzw. Fehler-Callback-Funktionen. Auf diese Weise können wir den Vorgang des Springens zur Website eines Drittanbieters, zum Anmelden und zum Empfangen der Rückgabeparameter in Vue problemlos abschließen. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel haben wir vorgestellt, wie man zur Anmeldung in Vue zu einer Website eines Drittanbieters springt und wie man damit umgeht, wenn Parameter zurückgegeben werden. Wir haben die Vorlagensyntax verwendet, um Sprungparameter einzufügen und Rückgabeparameter in der Komponente zu extrahieren und zu verarbeiten. Als Frontend-Entwickler ist es wichtig zu verstehen, wie man mit Websites Dritter interagiert und mit Rückgabeparametern umgeht. Ich glaube, dass Sie durch die Einleitung dieses Artikels in der Lage waren, diese Fähigkeit zu beherrschen und sie in der tatsächlichen Entwicklung anzuwenden. 🎜

Das obige ist der detaillierte Inhalt vonvue springt zur Website eines Drittanbieters und gibt nach der Anmeldung Parameter zurück. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn