Maison  >  Article  >  développement back-end  >  Terminez le didacticiel quatre sur le développement de comptes publics WeChat

Terminez le didacticiel quatre sur le développement de comptes publics WeChat

不言
不言original
2018-04-17 10:01:024179parcourir

Cet article présente le quatrième tutoriel complet sur le développement de comptes publics WeChat. Il a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

En raison de besoins professionnels, Au cours des deux dernières années, il y a eu de nombreux projets sur les comptes publics et les mini-programmes WeChat. C'est pourquoi je prévois d'écrire un tutoriel de production complet. Bien entendu, le meilleur tutoriel est la documentation de la plateforme de travail WeChat. Je vais juste parler du processus de production dans mon travail ici. J'héberge le code source de tous les articles connexes sur mon propre github Bienvenue à suivre : Adresse Cliquez pour ouvrir le lien. Commençons notre tutoriel. Dans cette section, nous décrivons la production d'autorisation de page Web : cette fois, nous utilisons le compte de test du compte public WeChat pour compléter cette fonction.

1. Autorisation de la page Web :

Document WeChat :


Définir le rappel domaine :



1.1 : Deux méthodes d'autorisation de page Web :

La méthode


Snsapi_base ne peut obtenir que l'openID de l'utilisateur qui appartient à des utilisateurs autorisés en silence et n'en est pas conscient

La méthode

Snsapi_userinfo peut obtenir les informations de base de l'utilisateur, mais nécessite une autorisation manuelle de l'utilisateur

1.2 : À propos de access_tokenInstructions :


access_token Ne peut être utilisée que pendant le processus d'autorisation de la page Web. Pour les autres interfaces, access_token doit utiliser la valeur obtenue à partir de l'interface de base.

1.3L'ensemble du processus d'autorisation de la page Web :


1

Étape 1 : L'utilisateur accepte d'autoriser, obtenircode(Besoin de guider l'utilisateur pour ouvrir l'interface d'autorisation)

2

Étape 2 : Passer codeEn échange d'une autorisation de page Webaccess_token(L'utilisateur s'engage à autoriser WeChat et demandera l'adresse de rappel définie)

3

Étape 3 : Actualiseraccess_token (si nécessaire)

4

Étape 4 : Extraire les informations utilisateur ( nécessite scope pour être snsapi_userinfo)

2. Implémentation du code :

2.1 Modifier le menu personnalisé :

La fonction d'adresse de saut est la suivante :


2.2La première étape pour implémenter le boot jump

Le code est le suivant :


// 引导跳转的方式
public function auth($action_name, $controller_name)
{
//    var_dump($action_name, $controller_name);
$bak = urlencode("http://www.xiaoziheng.club/home/".$controller_name."/".$action_name);
$redirecr_uri =urlencode('http://www.xiaoziheng.club/home/demo/getcode?bak='.$bak);
$url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$this->appid."&redirect_uri="
           .$redirecr_uri."&response_type=code&scope=snsapi_userinfo&state=".time()."#wechat_redirect";
header('Location:'.$url);
}

Les deux paramètres sont : le contrôleur et la méthode de l'adresse de saut :


public function __construct(Request $request)
{
parent::__construct();
$this->accessToken = get_access_token();
//获得方法    
$action_name =$request->action();
//获得控制器   
$controller_name = $request->controller();
if(!cookie('user')){
if($action_name !='getcode'){
$this->auth($action_name, $controller_name);
}
}
}


Dans la méthode de démarrage, nous obtiendrons la valeur de getcode : La fonction est la suivante : Elle contient la deuxième étape, la troisième étape et la quatrième étape Méthode de mise en œuvre de l'étape :



public function getcode(Request $request)
{
$code = $_GET['code'];
if(!$code){
echo '微信服务器故障';
exit;
}
// 第二步:通过code换取网页授权中的access_token
$url ="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$this->appid."&secret=".$this->appsecret
                         ."&code=".$code."&grant_type=authorization_code";
$result =file_get_contents($url);
$result = json_decode($result,true);
if(!$result){
echo '微信服务器故障';
exit;
}
// 第三步:获取用户的基本信息,此操作仅限scope为snspai_userinfo
$url ="https://api.weixin.qq.com/sns/userinfo?access_token=".$result['access_token']."&openid="
                       .$result['openid']."&lang=zh_CN";
$result =file_get_contents($url);
$result = json_decode($result,true);
$userInfo = db('user')->where("openid","=",$result['openid'])->find();
if(!$userInfo){
echo '操作数据可以';
$data = [
'nickname' =>$result['nickname'] ,
'openid'=>$result['openid'],
'headimgurl'=>$result['headimgurl']
];
db('user')->insert($data);
$userInfo = $result;
}
// 第四步骤:跳转回跳转地址
$bak = $_GET['bak'];
cookie('user',$userInfo);
header('Location:'.$bak);
}


Pendant le processus de mise en œuvre, nous allons Le demandé les informations utilisateur sont stockées dans la base de données. Lorsqu'elles réapparaîtront, il sera jugé s'il y a une valeur dans la base de données :

J'ai construit un serveur sur Alibaba Cloud, et les données obtenues sont les suivantes :


Le résultat de l'autorisation de la page Web est le suivant :



Remarques et points clés :


C'est pourquoi mes résultats de test ci-dessus n'affichent pas la boîte d'invite de confirmation, et il y a un à corriger Avoir une bonne compréhension des différents paramètres de l'interface. La signification de chaque paramètre, et la compréhension du protocole OAuth2.0 de WeChat : Voici un bon article sur ce protocole : Cliquez pour ouvrir le lien

En fait, à condition de lire Documentation de WeChat attentivement, Si vous êtes prudent et prudent pendant le développement, vous pouvez essentiellement développer un compte public WeChat. Dans la section suivante, nous parlerons des points de connaissances sur le téléchargement de fichiers de ressources...

Recommandations associées :

Terminer le didacticiel 3 sur le développement de comptes publics WeChat

Terminer le didacticiel 2 sur le développement de comptes publics WeChat

Terminer Premier didacticiel sur le développement de comptes publics 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