recherche
Maisondéveloppement back-endGolangComment utiliser Golang pour implémenter la connexion autorisée WeChat pour les applications Web

Avec la popularité de WeChat, la connexion WeChat est devenue une fonctionnalité incontournable pour de nombreuses applications Web. En se connectant avec l'autorisation WeChat, les utilisateurs peuvent facilement se connecter aux applications Web à l'aide de leur compte WeChat et éviter les processus d'enregistrement fastidieux. Cet article explique comment utiliser Golang pour implémenter la connexion autorisée WeChat pour les applications Web.

  1. Obtenez l'AppID et l'AppSecret de l'application WeChat Open Platform

Tout d'abord, nous devons nous inscrire et créer une application sur la WeChat Open Platform , récupérez l'application AppID et AppSecret. Sur la page de gestion des applications de la plateforme ouverte WeChat, vous pouvez voir les applications que vous avez créées et obtenir l'AppID et l'AppSecret de l'application.

  1. Construisez l'URL pour la connexion autorisée à WeChat

Lors de la construction de l'URL pour la connexion autorisée à WeChat, vous devez suivre les exigences de l'ouverture de WeChat plate-forme et ajoutez l'AppID, l'URL redirigée et certains autres paramètres sont assemblés selon certaines règles. Voici un exemple d'URL dans lequel "APPID" et "REDIRECT_URI" doivent être remplacés par l'AppID et l'URL de redirection de votre propre application :

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID
&redirect_uri=REDIRECT_URI
&response_type=code
&scope=snsapi_userinfo
&state=STATE#wechat_redirect

La description du paramètre est la suivante : #🎜🎜 #

    appid : AppID de l'application.
  • redirect_uri : L'adresse du lien de rappel redirigée après autorisation. Veuillez utiliser le code urlen pour traiter le lien.
  • response_type : type de retour, fixé au code.
  • scope : portée de l'autorisation de l'application, snsapi_base signifie obtenir uniquement l'openid de l'utilisateur, snsapi_userinfo signifie obtenir les détails de l'utilisateur.
  • state : Utilisé pour maintenir le statut des demandes et des rappels, et les ramener au tiers tels quels après avoir autorisé la demande.
Dans Golang, vous pouvez utiliser url.Values ​​​​pour créer des paramètres d'URL. Voici un exemple de code :

func buildAuthURL(appID, redirectURI, state string) string {
    values := make(url.Values)
    values.Set("appid", appID)
    values.Set("redirect_uri", redirectURI)
    values.Set("response_type", "code")
    values.Set("scope", "snsapi_userinfo")
    values.Set("state", state)
    return "https://open.weixin.qq.com/connect/oauth2/authorize?" + values.Encode() + "#wechat_redirect"
}

Cette fonction accepte trois paramètres : l'AppID de l'application, l'URL du rappel après autorisation et un état de chaîne aléatoire. La fonction renvoie une URL de connexion autorisée WeChat construite.

    Obtenir le jeton d'accès de l'utilisateur WeChat
Une fois que l'utilisateur a vérifié son identité dans le client WeChat, WeChat renvoie le code d'autorisation et redirige Go à l’URL de rappel prédéfinie. Dans l'URL de rappel, nous devons analyser les paramètres de l'URL, obtenir le code d'autorisation et utiliser le code pour échanger contre access_token. Voici un exemple de code :

func getAccessToken(appID, appSecret, code string) (string, error) {
    url := "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appID +
        "&secret=" + appSecret + "&code=" + code + "&grant_type=authorization_code"

    resp, err := http.Get(url)
    if err != nil {
        return "", err
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return "", err
    }

    var data struct {
        AccessToken string `json:"access_token"`
        ExpiresIn   int    `json:"expires_in"`
        OpenID      string `json:"openid"`
        Scope       string `json:"scope"`
    }

    if err := json.Unmarshal(body, &data); err != nil {
        return "", err
    }

    return data.AccessToken, nil
}

Cette fonction accepte trois paramètres : l'AppID de l'application, l'AppSecret de l'application et le code d'autorisation. La fonction utilise la méthode http.Get() pour envoyer une requête GET au serveur WeChat afin d'obtenir le access_token. Cette fonction renvoie une valeur access_token de type chaîne, ou une erreur si une erreur se produit.

    Obtenir des informations de base sur les utilisateurs de WeChat
Après avoir obtenu access_token, nous pouvons envoyer une demande pour obtenir des informations utilisateur au serveur WeChat et analyser et renvoie les données au format JSON pour obtenir des informations de base sur les utilisateurs de WeChat. Voici un exemple de code :

func getUserInfo(accessToken, openID string) (*userInfo, error) {
    url := "https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken + "&openid=" + openID

    resp, err := http.Get(url)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return nil, err
    }

    var user userInfo

    if err := json.Unmarshal(body, &user); err != nil {
        return nil, err
    }

    return &user, nil
}

Cette fonction accepte deux paramètres : access_token et user openid. La fonction utilise la méthode http.Get() pour envoyer une requête GET au serveur WeChat afin d'obtenir les informations de base de l'utilisateur WeChat. Cette fonction renvoie une variable de type pointeur pointant vers la structure userInfo, ou une erreur si une erreur survient.

    Écrire un gestionnaire pour la connexion autorisée à WeChat
Enfin, nous devons écrire un gestionnaire pour intégrer les fonctions ci-dessus pour obtenir une connexion autorisée à WeChat . Voici un exemple de code :

func wxLoginHandler(w http.ResponseWriter, r *http.Request) {
    appID := "your app id"
    appSecret := "your app secret"
    state := "random string"
    redirectURI := url.QueryEscape("http://your_server_url/callback")

    if r.Method == "GET" {
        // Redirect to Wechat login page
        http.Redirect(w, r, buildAuthURL(appID, redirectURI, state), 302)
    } else if r.Method == "POST" {
        // Get user info after login succeeds
        code := r.FormValue("code")
        if code == "" {
            http.Error(w, "Missing code parameter", http.StatusBadRequest)
            return
        }

        accessToken, err := getAccessToken(appID, appSecret, code)
        if err != nil {
            http.Error(w, "Failed to get access token", http.StatusInternalServerError)
            return
        }

        user, err := getUserInfo(accessToken, openID)
        if err != nil {
            http.Error(w, "Failed to get user info", http.StatusInternalServerError)
            return
        }

        // Do something with user info
        fmt.Fprintf(w, "Hello, %s!", user.Nickname)
    } else {
        http.Error(w, "Invalid request method", http.StatusMethodNotAllowed)
        return
    }
}

Cette fonction implémente l'ensemble du processus de connexion autorisée à WeChat. Lorsque l'utilisateur accède à "/wx_login", la fonction sera redirigée vers la page de connexion d'autorisation WeChat. Une fois que l'utilisateur s'est connecté sur cette page, la fonction sera redirigée vers l'URL de rappel avec le paramètre de code d'autorisation. Dans la fonction de rappel, nous utiliserons le code d'autorisation pour obtenir le access_token et les informations utilisateur de base, et pourrons enregistrer les informations utilisateur sur le serveur ou effectuer un autre traitement.

Résumé

Cet article explique comment utiliser Golang pour implémenter la connexion autorisée WeChat pour les applications Web. Grâce à l'introduction de cet article, nous pouvons comprendre le principe de mise en œuvre de la connexion autorisée WeChat et écrire un simple programme de traitement des connexions autorisées WeChat. Dans les applications pratiques, nous devons également prendre en compte des problèmes tels que la sécurité et les performances, et procéder aux optimisations et améliorations correspondantes en fonction des besoins réels.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Comprendre les Goroutines: une plongée profonde dans la concurrence de GoComprendre les Goroutines: une plongée profonde dans la concurrence de GoMay 01, 2025 am 12:18 AM

GoroutinesaConctionnement est en train de savoir-faire, en permettant à la croissance de la pondération.1).

Comprendre la fonction d'init en Go: but et utilisationComprendre la fonction d'init en Go: but et utilisationMay 01, 2025 am 12:16 AM

La poursuite de la théorie des fonctionnalités, les réglementations de configurations, l'orperformance a été utile, utilise-to-nection des fonctionnalités.

Comprendre les interfaces GO: un guide completComprendre les interfaces GO: un guide completMay 01, 2025 am 12:13 AM

GoInterfaceSareMethodsignatisesetSeTyPesmustimplement, permettant de permettre à la transfert depolymorphisms avec une information pour laCleaner, modularCode.Eplicite Implicitement satisfait, utile pour lesquelleserrorSandDeCoupling, ButrequireCarefusetoavoidRumeerRorroSedMaintAntainTaidTaipTyPesafety.

Récupérer des paniques en Go: quand et comment utiliser Recover ()Récupérer des paniques en Go: quand et comment utiliser Recover ()May 01, 2025 am 12:04 AM

Utilisez la fonction Recover () dans GO pour récupérer de la panique. Les méthodes spécifiques sont: 1) Utiliser Recover () pour capturer la panique dans la fonction de différence pour éviter les accidents du programme; 2) Enregistrer les informations d'erreur détaillées pour le débogage; 3) Décidez de reprendre l'opportunité de reprendre l'exécution du programme en fonction de la situation spécifique; 4) Utiliser avec prudence pour éviter d'affecter les performances.

Comment utilisez-vous les & quot; Strings & quot; Emballage pour manipuler les cordes en Go?Comment utilisez-vous les & quot; Strings & quot; Emballage pour manipuler les cordes en Go?Apr 30, 2025 pm 02:34 PM

L'article discute de l'utilisation du package "Strings" de Go pour la manipulation des chaînes, détaillant les fonctions communes et les meilleures pratiques pour améliorer l'efficacité et gérer efficacement Unicode.

Comment utilisez-vous le & quot; crypto & quot; Package pour effectuer des opérations cryptographiques en Go?Comment utilisez-vous le & quot; crypto & quot; Package pour effectuer des opérations cryptographiques en Go?Apr 30, 2025 pm 02:33 PM

L'article détaille en utilisant le package "crypto" de Go pour les opérations cryptographiques, discutant de la génération de clés, de la gestion et des meilleures pratiques pour la mise en œuvre sécurisée. Counomage de Character: 159

Comment utilisez-vous le 'temps' Emballage pour gérer les dates et les temps en Go?Comment utilisez-vous le 'temps' Emballage pour gérer les dates et les temps en Go?Apr 30, 2025 pm 02:32 PM

L'article détaille l'utilisation du package "Time" de Go pour gérer les dates, les heures et les fuseaux horaires, y compris l'heure actuelle, la création de temps spécifiques, l'analyse des chaînes et la mesure du temps écoulé.

Comment utilisez-vous le & quot; réflexion & quot; Package pour inspecter le type et la valeur d'une variable en Go?Comment utilisez-vous le & quot; réflexion & quot; Package pour inspecter le type et la valeur d'une variable en Go?Apr 30, 2025 pm 02:29 PM

L'article discute de l'utilisation du package "Reflect" de Go pour l'inspection et la modification des variables, mettant en évidence les méthodes et les considérations de performances.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

SublimeText3 version anglaise

SublimeText3 version anglaise

Recommandé : version Win, prend en charge les invites de code !

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP