Wie autorisiert das ThinkPHP5-Framework öffentliche WeChat-Kontowebseiten?

PHPz
Freigeben: 2023-04-14 11:22:58
Original
1502 Leute haben es durchsucht

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', ];
Nach dem Login kopieren

Darunter:

  • app_idundapp_secretsind die Parameter, die wir in der offiziellen Kontoverwaltungsoberfläche erhalten haben.
  • 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';
Nach dem Login kopieren

以上代码中,我们通过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); }
Nach dem Login kopieren

以上代码中,我们首先判断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'];
Nach dem Login kopieren

以上代码中,我们首先构造了一个请求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']); }
Nach dem Login kopieren

以上代码中,我们构造了一个请求用户信息的URL,并向该URL发送了请求,获取到了响应结果。如果响应结果中包含了errcodeauth_redirectist die Rückrufadresse nach der Autorisierung der WeChat-Webseite. Es muss eine URL-Adresse sein, auf die über das öffentliche Netzwerk zugegriffen werden kann.

3. Erhalten Sie die Webseiten-Autorisierungs-URL

Bevor wir die WeChat-Webseiten-Autorisierungsschnittstelle aufrufen, müssen wir die Webseiten-Autorisierungs-URL erstellen. Wir können dem Controller den folgenden Code hinzufügen: rrreeeIm obigen Code haben wir die zuvor konfigurierten öffentlichen Kontoinformationen über die Konfigurationsfunktion abgerufen und einen von der WeChat-Webseite autorisierten URI erstellt. Unter diesen bedeutet response_type=codedie Verwendung der Codemethode zur Autorisierung, und scope=snsapi_userinfobedeutet, 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 errcodeenthä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 errcodeenthä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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!