Maison > Article > développement back-end > Comment 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.
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.
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 : #🎜🎜 #
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.
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.
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.
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!