Im Zeitalter mobiler Endgeräte sind offizielle WeChat-Konten nach und nach zu einem Kanal geworden, über den Menschen Informationen erhalten, und zu einem Mittel für Händler, potenzielle Kunden zu gewinnen. Daher haben sich viele Programmierer der WeChat-Entwicklung zugewandt, und so sind wir heute hier Um Ihnen zu helfen, stellen wir Ihnen vor, wie Sie die Webseitenautorisierung bei der Entwicklung öffentlicher WeChat-Konten implementieren.
Zuvor gebe ich Ihnen eine benutzerdefinierte Anforderungsschnittstellenfunktion. Im folgenden Beispielcode wird diese Funktion für die Anforderungsschnittstelle verwendet
Die Funktion Diese Funktion besteht darin, eine Anfrage an die Schnittstelle zu initiieren, Parameter zu übergeben und die von der Schnittstelle zurückgegebenen Daten zurückzugeben
(Ich werde den Code hier nicht erklären, wenn Sie es wissen wollen Weitere Informationen finden Sie unter Zusammenfassung der PHP-Curl-Funktion)
//自定义请求接口函数,$data为空时发起get请求,$data有值时发情post请求 function http_url($url,$data=null){ $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); if(!empty($data)){ curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$data); } $res = curl_exec($ch); if(curl_errno($ch)){ echo "error:".curl_error($ch); exit; } curl_close($ch); return $res; }
(Die in diesem Artikel verwendete Schnittstelle wird offiziell von Tencent bereitgestellt. Sie können darauf verweisen zur öffentlichen WeChat-Plattform Entwicklerdokumentation)
1. Zuerst müssen wir unseren Beamten konfigurieren Konto
1. Bevor das öffentliche WeChat-Konto die Autorisierung der Benutzerwebseite anfordert, müssen Entwickler die offizielle Website der öffentlichen Plattform „Entwicklung – Schnittstellenberechtigungen – Webdienste –“ aufrufen. Webkonto – Webautorisierung zum Abrufen grundlegender Benutzerinformationen“ Ändern Sie in den Konfigurationsoptionen den Autorisierungs-Callback-Domänennamen. Bitte beachten Sie, dass hier der Domänenname (eine Zeichenfolge) ausgefüllt wird, nicht die URL, also bitte nicht http:// und andere Protokollheader hinzufügen
2. Autorisierungs-Callback-Domäne Namenskonfigurationsspezifikationen Es handelt sich um einen vollständigen Domänennamen. Der Domänenname, für den eine Webseitenautorisierung erforderlich ist, lautet beispielsweise: www.qq.com. Nach der Konfiguration lauten die Seiten unter diesem Domänennamen .html und http://www.qq.com/login .html können durch OAuth2.0 authentifiziert werden. Aber http://pay.qq.com, http://music.qq.com, http://qq.com kann keine OAuth2.0-Authentifizierung durchführen3 Wenn die offizielle Kontoanmeldung dazu berechtigt ist Wenn es ein Drittentwickler verwaltet, müssen keine Einstellungen vorgenommen werden. Der Drittanbieter kann das offizielle Konto ersetzen, um die Webseitenautorisierung zu implementieren.2. Der Benutzer stimmt dem zu Autorisierung und erhält den Code
Schnittstellenadresse:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state =STATE#wechat_redirect (beachten Sie die Schnittstellenparameter)
function Get_Code() //获取code { //构造请求地址 $code_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=微信公众号appid&redirect_uri=请求功后回调地址&response_type=code&scope=snsapi_userinfo&state=STATE #wechat_redirect"; //跳转到请求地址,应为本省设置了回调地址,所以不需要使用file_get_content()来请求接口。 header("location:" . $code_url); exit; }
3. Im erhaltenen Code fehlen möglicherweise access_token und openid
/** * 通过获取到的code来获取access_token和openid * $code为获取到的code * 接口的参数注意换成自己的,如appid和secret */ function GetAccess_Token($code) { $get_access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=$code&grant_type=authorization_code"; $res = http_url($get_access_token_url); return json_decode($res, true); }
4. Bestimmen Sie, ob das access_token gültig ist
https://api.weixin.qq.com/sns /auth?access_token=ACCESS_TOKEN&openid=OPENID
/** * 检查access_token是否有效 * */ function CkeckAccessToken($access_token, $openid) { $check_url = "https://api.weixin.qq.com/sns/auth?access_token=$access_token&openid=$openid"; $res = http_url($check_url); $result = json_decode($res, true); if (isset($result['errmsg']) && $result['errmsg'] == 1) { return 1; //access_token有效 } else { return 0; //access_token无效 } }
5. Falls ungültig, access_token< aktualisieren 🎜>
Schnittstelle:
/** * 如果获取到的access_token无效,通过refresh_token来刷新access_token *接口的参数注意换成自己的 */ function GetRefresh_Token($refresh_token) { $get_refresh_token_url = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=appid&grant_type=refresh_token&refresh_token=$refresh_token"; $res = http_url($get_refresh_token_url); return json_decode($res, true); }
6. Benutzerinformationen abrufen Schnittstelle:
https://api.weixin.qq.com/sns/userinfo?access_token= ACCESS_TOKEN&openid=OPENID&lang=zh_CN