>  기사  >  백엔드 개발  >  PHP는 타사 로그인 기능을 구현합니다.

PHP는 타사 로그인 기능을 구현합니다.

WBOY
WBOY원래의
2023-06-22 22:50:491607검색

인터넷이 발전하면서 점점 더 많은 웹사이트가 제3자 로그인 기능을 지원하기 시작했습니다. 제3자 로그인을 통해 사용자는 기존 소셜 계정(예: WeChat, QQ, Weibo 등)을 로그인 자격 증명으로 사용할 수 있어 반복적인 등록 문제를 피하고 다양한 계정 비밀번호를 기억할 수 있어 사용자 경험이 크게 향상됩니다. 이 문서에서는 WeChat 로그인을 예로 들어 PHP를 사용하여 제3자 로그인 기능을 구현하는 방법을 설명합니다.

1단계: WeChat 오픈 플랫폼 계정 얻기

WeChat에 로그인하려면 먼저 WeChat 오픈 플랫폼 계정이 있어야 합니다. 위챗 오픈 플랫폼에 계정을 등록한 후, 새로운 애플리케이션을 생성하고 "개발-기본 구성"에서 애플리케이션 ID, 애플리케이션 키 등 애플리케이션의 기본 정보를 입력해야 합니다.

애플리케이션 생성 후, 위챗 공식 계정 인증 또는 위챗 로그인 인증을 진행해야 합니다. 이 문서에서는 WeChat 로그인 인증에 대해서만 설명합니다. 인증 후 귀하의 애플리케이션은 아바타, 닉네임 등을 포함한 WeChat 사용자의 기본 정보를 얻을 수 있도록 승인됩니다.

2단계: 로그인 링크 생성

애플리케이션 ID와 애플리케이션 키를 얻은 후 사용자를 위한 WeChat 로그인 링크를 생성할 수 있습니다. 사용자가 이 링크를 클릭하면 WeChat 웹페이지 인증 페이지로 이동합니다. 사용자가 인증을 확인한 후 자동으로 우리가 설정한 URL 주소로 돌아가 인증 코드를 반환합니다.

다음은 로그인 링크를 생성하는 PHP 코드입니다.

$login_url = ‘https://open.weixin.qq.com/connect/oauth2/authorize?appid=’ . $appid . ‘&redirect_uri=’ . urlencode($redirect_uri) . ‘&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect’;

그 중 $appid는 애플리케이션 ID이고 $redirect_uri는 이동할 URL 주소입니다. $redirect_uri는 매개변수를 전달할 수 없으며 urlencode로만 이스케이프 처리한 다음 URL에 연결할 수 있다는 점에 유의하세요. 그렇지 않으면 인증 코드가 올바르게 수신되지 않습니다.

3단계: access_token 얻기

2단계에서 반환된 코드를 통해 Access_token과 openid를 얻을 수 있습니다. Access_token은 WeChat이 사용자를 식별하는 데 사용하는 고유 식별자이며 더 높은 수준의 사용자 정보를 얻는 데 사용할 수 있습니다. access_token을 얻기 위한 구체적인 PHP 코드는 다음과 같습니다.

$token_url = ‘https://api.weixin.qq.com/sns/oauth2/access_token?appid=’ . $appid . ‘&secret=’ . $secret . ‘&code=’ . $code . ‘&grant_type=authorization_code’;
$resp = file_get_contents($token_url);
$resp_arr = json_decode($resp, true);
$access_token = $resp_arr[‘access_token’];

그 중 $secret은 애플리케이션 키이고 $code는 인증 코드입니다. 여기에서는 file_get_contents 함수를 사용하여 HTTP 요청을 보내고, 반환된 JSON 문자열을 배열로 구문 분석하고, access_token을 얻습니다.

4단계: 사용자 정보 얻기

access_token을 얻은 후 이 access_token을 사용하여 사용자의 세부 정보를 얻을 수 있습니다. 다음 링크에 접속하면 해당 사용자의 오픈아이디, 닉네임, 아바타 등의 정보를 얻을 수 있습니다.

$userinfo_url = ‘https://api.weixin.qq.com/sns/userinfo?access_token=’ . $access_token . ‘&openid=’ . $openid . ‘&lang=zh_CN’;
$userinfo_resp = file_get_contents($userinfo_url);
$userinfo = json_decode($userinfo_resp, true);
$nickname = $userinfo[‘nickname’];

이 시점에서 PHP를 통해 WeChat 로그인 기능을 구현했습니다. 위의 코드를 사용하여 다른 소셜 네트워킹 사이트에 대한 제3자 로그인을 구현할 수 있습니다. 해당 API 인터페이스를 교체하고 해당 사용자 정보를 얻으면 됩니다.

제3자 로그인에 대한 보안도 고려해야 하며, 해커의 악용을 방지하기 위해 로그인 과정에서 CSRF 공격을 방지하는 조치를 추가해야 합니다.

위 내용은 PHP는 타사 로그인 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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