Da offizielle WeChat-Konten immer beliebter werden, beginnen immer mehr Menschen, ihre eigenen offiziellen Konten zu erstellen. Unter diesen ist die Webseitenautorisierung eine gängige Entwicklungsmethode bei der Entwicklung öffentlicher Konten. In diesem Artikel wird erläutert, wie Sie das ThinkPHP5-Framework zum Autorisieren öffentlicher WeChat-Kontowebseiten verwenden.
1. Registrieren Sie ein öffentliches Konto und erhalten Sie AppID und AppSecret
Bevor Sie die WeChat-Webseite für öffentliche Konten autorisieren, müssen Sie zunächst ein öffentliches WeChat-Konto registrieren und Entwicklerberechtigungen beantragen. Nach erfolgreicher Beantragung können Sie im „Developer Center“ die beiden wichtigen Parameter AppID und AppSecret erhalten.
2. Öffentliche Kontoinformationen konfigurieren
Im ThinkPHP5-Framework können wir eine neue wechat.php-Datei im Konfigurationsverzeichnis erstellen, um unsere öffentlichen Kontokonfigurationsinformationen zu speichern. In dieser Datei müssen wir die folgenden Informationen konfigurieren:
'your appid', 'app_secret' => 'your appsecret', 'auth_redirect' => 'your callback url', ];
Darunter:
app_id
undapp_secret
sind die Parameter, die wir in der offiziellen Kontoverwaltungsoberfläche erhalten haben.app_id
和
app_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发送了请求,获取到了响应结果。如果响应结果中包含了errcode
auth_redirect
ist die Rückrufadresse nach der Autorisierung der WeChat-Webseite. Es muss eine URL-Adresse sein, auf die über das öffentliche Netzwerk zugegriffen werden kann.
response_type=code
die Verwendung der Codemethode zur Autorisierung, und
scope=snsapi_userinfo
bedeutet, dass der Umfang der Autorisierung darin besteht, grundlegende Benutzerinformationen zu erhalten. 4. Erhalten Sie den Webseiten-AutorisierungscodeNachdem wir die Webseiten-Autorisierungs-URL erstellt haben, müssen wir zur Autorisierung zur URL springen. Nach erfolgreicher Autorisierung gibt der WeChat-Server den Codeparameter über GET zurück. Wir können den folgenden Code in den Controller einfügen, um den Code zu erhalten. rrreeeIm obigen Code ermitteln wir zunächst, ob die URL den Codeparameter enthält. Wenn dies der Fall ist, bedeutet dies, dass der Benutzer erfolgreich autorisiert wurde und wir den erhaltenen Code für die spätere Verwendung speichern. Wenn nicht, müssen Sie springen und eine Webseitenautorisierung durchführen. 5. Erhalten Sie den Benutzer-Access_token und die openId. Nach erfolgreicher Autorisierung sind für nachfolgende Vorgänge access_token und openId erforderlich. Wir können den folgenden Code im Controller hinzufügen, um das access_token und die openId des Benutzers abzurufen. rrreeeIm obigen Code haben wir zunächst eine URL zur Anforderung von access_token erstellt, eine Anfrage an die URL gesendet und das Antwortergebnis erhalten. Wenn das Antwortergebnis
errcode
enthält, bedeutet dies, dass in der Anfrage ein Fehler vorliegt und wir eine Ausnahme auslösen. Andernfalls speichern wir das erhaltene access_token und die openId für die spätere Verwendung. 6. Benutzerdetails abrufenNachdem wir das access_token und die openId des Benutzers erhalten haben, können wir die detaillierten Informationen des Benutzers über den folgenden Code abrufen: rrreeeIm obigen Code erstellen wir eine URL, die Benutzerinformationen anfordert. Eine Anfrage wurde gesendet auf die URL und das Antwortergebnis wurde erhalten. Wenn die Antwort
errcode
enthält, bedeutet dies, dass in der Anfrage ein Fehler vorliegt und wir eine Ausnahme auslösen. Zu diesem Zeitpunkt haben wir den Prozess der Autorisierung der offiziellen WeChat-Konto-Webseite erfolgreich abgeschlossen!
Das obige ist der detaillierte Inhalt vonWie autorisiert das ThinkPHP5-Framework öffentliche WeChat-Kontowebseiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!