Maison  >  Article  >  cadre php  >  Comment le framework ThinkPHP5 autorise-t-il les pages Web de comptes publics WeChat ?

Comment le framework ThinkPHP5 autorise-t-il les pages Web de comptes publics WeChat ?

PHPz
PHPzoriginal
2023-04-14 11:21:331525parcourir

À mesure que les comptes officiels WeChat deviennent de plus en plus populaires, de plus en plus de personnes commencent à créer leur propre compte officiel. Parmi eux, l'autorisation de pages Web est une méthode de développement courante dans le développement de comptes publics. Cet article expliquera comment utiliser le framework ThinkPHP5 pour autoriser les pages Web du compte public WeChat.

1. Enregistrez un compte public et obtenez AppID et AppSecret

Avant d'autoriser la page Web du compte public WeChat, vous devez d'abord enregistrer un compte public WeChat et demander les autorisations de développeur. Une fois l'application réussie, vous pouvez obtenir les deux paramètres importants AppID et AppSecret dans le "Developer Center".

2. Configurer les informations du compte public

Dans le framework ThinkPHP5, nous pouvons créer un nouveau fichier wechat.php dans le répertoire de configuration pour stocker les informations de configuration de notre compte public. Dans ce fichier, nous devons configurer les informations suivantes :

<?php
return [
    &#39;app_id&#39; => 'your appid',
    'app_secret' => 'your appsecret',
    'auth_redirect' => 'your callback url',
];

Parmi elles :

  • app_id et app_secret sont les paramètres que nous avons obtenus dans l'interface officielle de gestion de compte.
  • app_idapp_secret是我们在公众号管理界面获得的参数。
  • auth_redirect是微信网页授权后的回调地址,要求必须是公网可访问的URL地址。

三、获取网页授权url

在我们调用微信网页授权接口前,需要构造网页授权url。我们可以在控制器中添加以下代码:

$config = config('wechat');
$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='
        . $config['app_id']
        . '&redirect_uri='
        . urlencode($config['auth_redirect'])
        . '&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect';

以上代码中,我们通过config函数获取到了之前配置的公众号信息,并构造了一个微信网页授权的URI。其中,response_type=code表示使用code方式进行授权,scope=snsapi_userinfo表示授权范围为获取用户基本信息。

四、获取网页授权code

构造好网页授权的URL后,我们需要跳转该URL,进行授权。授权成功后,微信服务器会将code参数通过GET方式传递回来。我们可以在控制器中添加以下代码,用于获取code。

if (isset($_GET['code'])) {
    $code = $_GET['code'];
} else {
    $this->redirect($url);
}

以上代码中,我们首先判断URL中是否包含了code参数。如果有,则表示用户已经授权成功,我们将获取到的code存储起来,以便后续使用。如果没有,则需要进行跳转,进行网页授权。

五、获取用户access_token和openId

在授权成功后,后续的操作需要用到access_token和openId。我们可以在控制器中添加以下代码,用于获取用户的access_token和openId。

$accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='
                    . $config['app_id']
                    . '&secret='
                    . $config['app_secret']
                    . '&code='
                    . $code
                    . '&grant_type=authorization_code';
$accessTokenResponse = json_decode(file_get_contents($accessTokenUrl), true);
if (isset($accessTokenResponse['errcode'])) {
    throw new \Exception('ERROR ' . $accessTokenResponse['errcode'] . ': ' . $accessTokenResponse['errmsg']);
}
$accessToken = $accessTokenResponse['access_token'];
$openId = $accessTokenResponse['openid'];

以上代码中,我们首先构造了一个请求access_token的URL,并向该URL发送了请求,获取到了响应结果。如果响应结果中包含了errcode,则表示请求出现了错误,我们将抛出一个异常;否则,我们将获取到的access_token和openId存储起来,以便后续使用。

六、获取用户详细信息

在获取到用户的access_token和openId后,我们可以通过以下代码,获取到用户的详细信息:

$userInfoUrl = 'https://api.weixin.qq.com/sns/userinfo?access_token='
                . $accessToken
                . '&openid='
                . $openId
                . '&lang=zh_CN';
$userInfoResponse = json_decode(file_get_contents($userInfoUrl), true);
if (isset($userInfoResponse['errcode'])) {
    throw new \Exception('ERROR ' . $userInfoResponse['errcode'] . ': ' . $userInfoResponse['errmsg']);
}

以上代码中,我们构造了一个请求用户信息的URL,并向该URL发送了请求,获取到了响应结果。如果响应结果中包含了errcodeauth_redirect est l'adresse de rappel après autorisation de la page web WeChat. Il doit s'agir d'une adresse URL accessible depuis le réseau public.

3. Obtenez l'URL d'autorisation de la page Web

Avant d'appeler l'interface d'autorisation de la page Web WeChat, nous devons construire l'URL d'autorisation de la page Web. Nous pouvons ajouter le code suivant au contrôleur : 🎜rrreee🎜Dans le code ci-dessus, nous avons obtenu les informations du compte public précédemment configurées via la fonction de configuration et construit un URI autorisé par la page Web WeChat. Parmi eux, response_type=code signifie utiliser la méthode de code pour l'autorisation, et scope=snsapi_userinfo signifie que la portée de l'autorisation est d'obtenir des informations utilisateur de base. 🎜🎜4. Obtenez le code d'autorisation de la page Web🎜🎜Après avoir construit l'URL d'autorisation de la page Web, nous devons accéder à l'URL pour l'autorisation. Une fois l'autorisation réussie, le serveur WeChat transmettra le paramètre de code via GET. Nous pouvons ajouter le code suivant dans le contrôleur pour obtenir le code. 🎜rrreee🎜Dans le code ci-dessus, nous déterminons d'abord si l'URL contient le paramètre code. Si tel est le cas, cela signifie que l'utilisateur a été autorisé avec succès et nous stockerons le code obtenu pour une utilisation ultérieure. Sinon, vous devez sauter et effectuer une autorisation de page Web. 🎜🎜5. Obtenez l'utilisateur access_token et openId🎜🎜Après une autorisation réussie, les opérations ultérieures nécessitent access_token et openId. Nous pouvons ajouter le code suivant dans le contrôleur pour obtenir le access_token et l'openId de l'utilisateur. 🎜rrreee🎜Dans le code ci-dessus, nous avons d'abord construit une URL demandant access_token, envoyé une requête à l'URL et obtenu le résultat de la réponse. Si le résultat de la réponse contient errcode, cela signifie qu'il y a une erreur dans la requête, et nous lancerons une exception ; sinon, nous stockerons le access_token et l'openId obtenus pour une utilisation ultérieure. 🎜🎜6. Obtenir les détails de l'utilisateur🎜🎜Après avoir obtenu le access_token et l'openId de l'utilisateur, nous pouvons obtenir les informations détaillées de l'utilisateur via le code suivant : 🎜rrreee🎜Dans le code ci-dessus, nous construisons une URL qui demande des informations sur l'utilisateur, une demande a été envoyée. à l'URL et le résultat de la réponse a été obtenu. Si le résultat de la réponse contient errcode, cela signifie qu'il y a une erreur dans la requête et nous lancerons une exception. 🎜🎜À ce stade, nous avons terminé avec succès le processus d'autorisation de la page Web du compte officiel WeChat ! 🎜

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