>  기사  >  PHP 프레임워크  >  ThinkPHP5 프레임워크는 WeChat 공개 계정 웹 페이지를 어떻게 인증합니까?

ThinkPHP5 프레임워크는 WeChat 공개 계정 웹 페이지를 어떻게 인증합니까?

PHPz
PHPz원래의
2023-04-14 11:21:331567검색

WeChat 공식 계정이 점점 더 인기를 끌면서 점점 더 많은 사람들이 자신의 공식 계정을 만들기 시작했습니다. 그 중 웹페이지 승인은 공용 계정 개발에서 일반적인 개발 방법입니다. 이 기사에서는 ThinkPHP5 프레임워크를 사용하여 WeChat 공개 계정 웹 페이지를 인증하는 방법을 소개합니다.

1. 공개 계정 등록 및 AppID 및 AppSecret 획득

WeChat 공개 계정 웹페이지를 인증하기 전에 먼저 WeChat 공개 계정을 등록하고 개발자 권한을 신청해야 합니다. 응용 프로그램이 성공적으로 완료되면 "개발자 센터"에서 두 가지 중요한 매개변수인 AppID와 AppSecret을 얻을 수 있습니다.

2. 공개 계정 정보 구성

ThinkPHP5 프레임워크에서는 config 디렉터리에 새로운 wechat.php 파일을 생성하여 공개 계정 구성 정보를 저장할 수 있습니다. 이 파일에서 다음 정보를 구성해야 합니다.

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

그 중:

  • app_idapp_secret는 공식 계정 관리 인터페이스에서 얻은 매개변수입니다.
  • 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는 WeChat 웹페이지 인증 후의 콜백 주소입니다. 공용 네트워크에서 액세스할 수 있는 URL 주소여야 합니다.

3. 웹페이지 인증 URL 얻기

WeChat 웹페이지 인증 인터페이스를 호출하기 전에 웹페이지 인증 URL을 구성해야 합니다. 컨트롤러에 다음 코드를 추가할 수 있습니다. 🎜rrreee🎜위 코드에서는 config 함수를 통해 이전에 구성된 공용 계정 정보를 획득하고 WeChat 웹 페이지에서 승인한 URI를 구성했습니다. 그 중 response_type=code는 인증을 위해 코드 방식을 사용한다는 의미이고, scope=snsapi_userinfo는 인증 범위가 기본 사용자 정보를 얻는 것임을 의미합니다. 🎜🎜4. 웹페이지 인증 코드 받기🎜🎜웹페이지 인증 URL을 생성한 후 인증을 위해 해당 URL로 이동해야 합니다. 승인이 성공하면 WeChat 서버는 GET을 통해 코드 매개변수를 다시 전달합니다. 컨트롤러에 다음 코드를 추가하여 코드를 얻을 수 있습니다. 🎜rrreee🎜위 코드에서는 먼저 URL에 코드 매개변수가 포함되어 있는지 확인합니다. 있는 경우 이는 사용자가 성공적으로 인증되었음을 의미하며 당사는 이후 사용을 위해 획득한 코드를 저장합니다. 그렇지 않은 경우 점프하여 웹페이지 인증을 수행해야 합니다. 🎜🎜5. 사용자 access_token 및 openId🎜🎜인증이 성공적으로 완료되면 후속 작업에는 access_token 및 openId가 ​​필요합니다. 사용자의 access_token 및 openId를 얻기 위해 컨트롤러에 다음 코드를 추가할 수 있습니다. 🎜rrreee🎜위 코드에서는 먼저 access_token을 요청하는 URL을 생성하고 해당 URL에 요청을 보내고 응답 결과를 얻었습니다. 응답 결과에 errcode가 포함되어 있으면 요청에 오류가 있다는 의미이며 예외가 발생하면 이후 사용을 위해 획득한 access_token 및 openId를 저장합니다. 🎜🎜6. 사용자 세부 정보 얻기🎜🎜사용자의 access_token 및 openId를 얻은 후 다음 코드를 통해 사용자의 세부 정보를 얻을 수 있습니다. 🎜rrreee🎜위 코드에서는 사용자 정보를 요청하는 URL을 구성하고 요청이 전송되었습니다. URL에 접속하여 응답 결과를 얻었습니다. 응답 결과에 errcode가 포함되어 있으면 요청에 오류가 있다는 의미이며 예외가 발생합니다. 🎜🎜현재 WeChat 공식 계정 웹페이지 인증 과정이 성공적으로 완료되었습니다! 🎜

위 내용은 ThinkPHP5 프레임워크는 WeChat 공개 계정 웹 페이지를 어떻게 인증합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.