WeChat 웹페이지 인증


WeChat 웹페이지 인증

1475981980514516.png

사용자가 WeChat 클라이언트에서 제3자 웹페이지에 액세스하는 경우 공식 계정은 WeChat 웹페이지 인증 메커니즘을 통해 사용자의 기본 정보를 얻은 다음 비즈니스 로직을 구현할 수 있습니다.

웹페이지 승인 콜백 도메인 이름에 대한 안내

1. WeChat 공식 계정이 사용자의 웹페이지 승인을 요청하기 전에 개발자는 "개발-인터페이스 권한-웹페이지 서비스-웹페이지 계정-웹페이지 승인 받기"로 이동해야 합니다. 공개 플랫폼 공식 홈페이지의 "기본 사용자 정보" 구성 옵션에서 인증 콜백 도메인 이름을 수정하세요. 여기에는 URL이 아닌 도메인 이름(문자열)이 입력되므로 http://와 같은 프로토콜 헤더를 추가하지 마세요.

2 인증 콜백 도메인 이름 구성 사양은 전체 도메인입니다. 웹 페이지 승인이 필요한 도메인 이름과 같은 이름은 www.qq.com입니다. 구성 후 페이지는 http://www.qq.com/music.html 및 http://www.qq.com입니다. 이 도메인 이름의 /login.html은 OAuth2.0으로 인증될 수 있습니다. 단, http://pay.qq.com, http://music.qq.com, http://qq.com은 OAuth2.0 인증을 수행할 수 없습니다.

3. 공식 계정 로그인이 제3자에게 승인된 경우. 개발자 관리하려면 어떤 설정도 할 필요가 없습니다. 제3자가 공식 계정을 대체하여 웹 페이지 승인을 구현하도록 하세요

웹페이지 권한 부여의 두 범위에 대한 설명

1 범위는 입력하는 사용자를 얻는 데 사용되므로 snsapi_base로 시작됩니다. 페이지 openid가 자동으로 인증되고 자동으로 콜백 페이지로 이동합니다. 사용자가 인식하는 것은 콜백 페이지(종종 비즈니스 페이지)

2에 직접 들어가는 것입니다. snsapi_userinfo를 범위로 사용하여 시작된 웹 페이지 인증은 사용자의 기본 정보를 얻는 데 사용됩니다. 그러나 이러한 승인을 위해서는 사용자가 수동으로 동의해야 하며, 사용자가 동의하였으므로 별도의 주의는 필요하지 않으며, 승인 후에는 사용자의 기본정보를 얻을 수 있습니다.

3. 사용자 관리 인터페이스의 "사용자 기본 정보 얻기 인터페이스"는 사용자가 공식 계정에 접속하거나 이벤트를 푸시한 후에만 사용자의 OpenID를 기반으로 사용자의 기본 정보를 얻을 수 있습니다. 메시지. 다른 WeChat 인터페이스를 포함한 이 인터페이스를 성공적으로 호출하려면 사용자(예: openid)가 공식 계정을 팔로우해야 합니다.

웹페이지 인증 access_token과 일반 access_token의 차이점

1. WeChat 웹페이지 인증은 OAuth2를 통해 구현됩니다. .0 메커니즘에서는 사용자가 공식 계정을 승인한 후 공식 계정에서 웹 페이지 승인 전용 인터페이스 호출 인증서(웹 페이지 승인 access_token)를 얻을 수 있으며, 웹 페이지 승인 access_token을 통해 사후 승인 인터페이스 호출이 이루어질 수 있습니다. 사용자의 기본 정보 획득 등

2. 다른 WeChat 인터페이스의 경우 기본 지원의 "Get access_token" 인터페이스를 통해 일반 access_token 호출을 얻어야 합니다.

UnionID 메커니즘 정보

1. 기본 사용자 정보를 얻기 위한 웹페이지 인증도 UnionID 메커니즘을 따릅니다. 즉, 개발자가 여러 공식 계정 간 또는 공식 계정과 모바일 애플리케이션 간 사용자 계정을 통합해야 하는 경우 먼저 WeChat 오픈 플랫폼(open.weixin.qq.com)으로 이동하여 공식 계정을 바인딩해야 합니다. 위의 요구 사항을 충족하려면 UnionID 메커니즘을 사용하세요.

2. UnionID 메커니즘의 역할 설명: 개발자가 여러 모바일 애플리케이션, 웹사이트 애플리케이션 및 공개 계정을 보유한 경우 동일한 사용자가 사용자의 기본 정보에서 UnionID를 획득하여 사용자의 고유성을 구별할 수 있습니다. 동일한 WeChat에 공개 플랫폼 아래의 다양한 애플리케이션(모바일 애플리케이션, 웹사이트 애플리케이션 및 공개 계정)은 동일한 통합 ID를 갖습니다.

특수 시나리오의 자동 인증 정보

1. 위에서 언급한 것처럼 snsapi_base를 범위로 하는 웹 페이지 인증의 경우 자동으로 인증되며 사용자는 알 수 없습니다.

2. account , 사용자가 공식 계정의 세션이나 사용자 정의 메뉴에서 공식 계정의 웹 인증 페이지에 들어가면 범위가 snsapi_userinfo라도 인증이 자동으로 수행되어 사용자가 알지 못합니다.

구체적으로 웹페이지 인증 프로세스는 4단계로 나누어집니다.

1. 사용자가 인증 페이지에 들어가 인증에 동의하고 코드를 얻도록 안내합니다.

2. 웹페이지 인증 access_token(access_token과 다름)으로 코드를 교환합니다.

3. 필요한 경우 개발자는 만료를 방지하기 위해 웹페이지 인증 access_token을 새로 고칠 수 있습니다.

4. 웹페이지 인증 access_token 및 openid를 통해 사용자 기본 정보를 얻습니다(UnionID 메커니즘 지원)


1단계 : 사용자는 코드 승인 및 획득에 동의합니다

WeChat 공개 계정에 승인 범위(범위 매개변수)의 권한이 있는지 확인한다는 전제 하에(서비스 계정이 고급 인터페이스를 얻은 후 snsapi_base 및 snsapi_userinfo가 포함됩니다) 기본적으로 범위 매개변수), 추종자에게 다음 페이지를 열도록 안내합니다:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect "링크에 접근할 수 없습니다"라는 메시지가 표시되면 매개변수가 다음과 같은지 확인하세요. 범위 매개변수에 해당하는 승인 범위 권한이 올바르게 입력되었습니다.

특별 참고 사항: 승인 작업의 높은 보안 수준으로 인해 WeChat은 승인 요청을 시작할 때 링크의 매개변수 순서가 잘못된 경우 정기적으로 강력한 일치 확인을 수행합니다. 승인 페이지는 정상적으로 접속이 되지 않습니다

참조 링크(체험하려면 위챗 클라이언트에서 이 링크를 열어주세요) 범위는 snsapi_base https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https %3A%2F%2Fchong.qq .com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdap

ter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_bas

e&state=123# wechat_redirect 범위는 snsapi_userinfo https://open .weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Fauth_response.php&response_type=

code&scope=snsapi_userinfo&state=STATE#wechat_re입니다. 직접

특별한 주의: 점프 콜백 리디렉션_uri는 인증 코드의 보안을 보장하기 위해 https 링크를 사용해야 합니다.

매개변수 설명

매개변수 가 필수인가요? 설명
appid공식 계정의 고유 식별자입니다.
redirect_uri는 다음 이후에 리디렉션됩니다. 인증주소 부탁드려요 urlencode 쌍을 사용하십시오. 링크가 처리되었습니다.
response_type 반환 유형입니다. 코드를 입력하세요.
scope 애플리케이션 인증 범위, snsapi_base(인증 페이지가 팝업되지 않습니다. 직접 점프하면 사용자 openid만 알 수 있음), snsapi_userinfo (인증 페이지가 뜨고 openid를 통해 닉네임, 성별, 위치를 알 수 있음)게다가 사용자가 주의를 기울이지 않더라도 사용자가 승인하면 정보를 얻을 수 있습니다)
stateNo상태 매개변수는 리디렉션 후 포함되므로 개발자가 채울 수 있습니다. a-zA-Z0 매개변수 값 -9, 최대 128바이트
#wechat_redirect직접 열거나 302페이지 리디렉션을 하든 이 매개변수를 가져와야 합니다

아래 그림은 범위가 snsapi_userinfo와 같을 때 인증 페이지를 보여줍니다:

사용자가 인증에 동의한 후# 🎜🎜##🎜🎜 #
사용자가 승인에 동의하면 페이지가 리디렉션_uri/?code=CODE&state=STATE로 이동합니다.

코드 설명: 코드는 access_token 교환 티켓으로 사용됩니다. 각 사용자 인증과 함께 가져온 코드는 한 번만 사용할 수 있으며 그렇지 않으면 자동으로 만료됩니다. 5분간 사용.


2단계: 웹페이지 인증 access_token으로 코드 교환

우선, 여기 코드는 특별합니다. 웹페이지 인증 access_token은 기본 지원의 access_token과 다릅니다(이 access_token은 다른 인터페이스를 호출하는 데 사용됩니다). 공식 계정은 다음 인터페이스를 통해 웹페이지 인증 access_token을 얻을 수 있습니다. 웹 페이지 인증 범위가 snsapi_base인 경우 이 단계에서는 웹 페이지 인증 access_token을 획득하는 동안 openid도 획득하며 snsapi_base 스타일 웹 페이지 인증 프로세스는 여기서 끝납니다.

특별 참고 사항: 공용 계정의 비밀과 획득한 access_token은 보안 수준이 매우 높기 때문에 서버에만 저장해야 하며 서버로 전달될 수 없습니다. 고객. access_token을 새로 고치고 access_token을 통해 사용자 정보를 얻는 등의 후속 단계도 서버에서 시작해야 합니다.

요청 방법

코드를 획득한 후 다음 링크를 요청하여 access_token을 획득하세요: https://api.weixin.qq.com /sns/ oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

매개변수 설명

매개변수 가 필수인가요? Explanation
appid공식 계정
secret의 고유 식별자입니다. 네 공식 앱의 비밀 account
code Yes1단계에서 얻은 코드 매개변수를 입력하세요
grant_typeYesauthorization_code를 입력하세요

반환 지침

정확할 때 반환되는 JSON 데이터 패킷은 다음과 같습니다:

{ "access_token":"ACCESS_TOKEN",

"expires_in":7200,

"refresh_token":"REFRESH_TOKEN",

"openid ": "OPENID",

"범위":"SCOPE" }

ParametersDescription
access_token웹 페이지 승인 인터페이스 호출 바우처, 참고: 이 access_token은 기본
expires_inaccess_token 인터페이스 호출 바우처 시간 초과에서 지원되는 access_token과 다릅니다. 단위 ( 초) )
refresh_tokenUser Refresh access_token
openid사용자의 고유 ID입니다. 공식 계정을 팔로우하지 않을 때, 공식 계정의 웹 페이지를 방문할 때 고유한 OpenID입니다. 사용자 및 공식 계정도 생성됩니다
scope사용자가 승인한 범위, 쉼표(,)로 구분됨

오류가 있는 경우 WeChat은 다음과 같이 JSON 데이터 패킷을 반환합니다(예: 잘못된 코드 오류):

{"errcode":40029,"errmsg":"invalid code"}

3단계: access_token 새로 고침(필요한 경우)

access_token의 유효 기간이 짧기 때문에 access_token 시간이 초과되면 Refresh_token을 사용하여 새로 고침할 수 있습니다. 승인하다.

요청 방법

두 번째 단계에서 Refresh_token을 획득한 후 다음 링크를 요청하여 access_token을 획득하세요:

https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type =refresh_token&refresh_token=REFRESH_TOKEN


매개변수 가 필수인가요? 설명
appid공식 계정
grant_typeYes의 고유 식별자입니다. 새로고침_토큰을 입력하세요
refresh_token is access_token
을 통해 얻은 Refresh_token 매개변수를 입력하세요.

반환 지침

정확할 때 반환되는 JSON 데이터 패킷은 다음과 같습니다:

{ "access_token":"ACCESS_TOKEN",

"expires_in":7200,

"refresh_token":"REFRESH_TOKEN",

"open id": "OPENID",

"scope":"SCOPE" }

ParametersDescription
access_token웹 페이지 승인 인터페이스 호출 바우처, 참고: 이 access_token은 기본
expires_inaccess_token 인터페이스 호출 바우처 시간 초과에서 지원되는 access_token과 다릅니다. 단위 ( 초) )
refresh_tokenUser Refresh access_token
openid사용자 고유 식별자
scope사용자 승인 범위, 쉼표(,)를 사용하여 구분

오류가 있는 경우 WeChat은 다음과 같이 JSON 데이터 패킷을 반환합니다(예: 잘못된 코드 오류):

{"errcode":40029,"errmsg":"invalid code"}

4단계: 사용자 정보 가져오기(범위는 snsapi_userinfo여야 함)

웹 페이지 인증 범위가 snsapi_userinfo인 경우 이제 개발자는 access_token 및 openid를 통해 사용자 정보를 가져올 수 있습니다.

요청 방법

http: GET(https 프로토콜을 사용하세요) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

Parameter description eterParameter eterParameter

description
Access_TokenWeb Page Authorization 인터페이스 호출 인증서, 참고 :이 Access_Token
lang국가 및 지역 언어 버전으로 돌아가기, zh_CN 단순화, zh_TW 전통, en 영어

반환 지침

정확할 때 반환되는 JSON 데이터 패킷은 다음과 같습니다.

{ "openid":" OPENID",

#🎜 🎜# "nickname": NICKNAME,

"sex":"1",

"province":"PROVINCE"

" city":"CITY",

"country":"COUNTRY",

"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5 WKSYVY0ChQKkia JSgQ1dZuTOgvLLrhJbERQQ #🎜🎜 #

4eMsv84eavHiaiceqxibJxCfHe/46",

"privilege":[ "PRIVILEGE1" "PRIVILEGE2" ],

"unionid": "o6_b sdsad6_2sgVt7hMZOPfL"

}

ParameterDescription
openid사용자의 고유 식별자
nickname사용자 별명
sex사용자의 성별, 값 1이면 남성이다. 값은 2 여성, 값이 0이면 알 수 없음
province사용자 프로필에 입력된 지방
city일반 사용자 프로필에 입력된 도시
country 국가, 예를 들어 중국은 CN
headimgurl사용자 아바타, 마지막 값은 정사각형 아바타 크기를 나타냅니다(0, 46, 64, 96, 132개의 값을 사용할 수 있으며, 0은 640을 나타냄). *640 정사각형 아바타), 사용자에게 아바타가 없는 경우 이 항목은 비어 있습니다. 사용자가 아바타를 변경하면 원래 아바타 URL은 유효하지 않게 됩니다.
privilege사용자 권한 정보, json 배열, 예: WeChat Woka 사용자는 (chinaunicom)
unionid이 필드는 사용자가 공식 계정을 WeChat 오픈 플랫폼 계정에 바인딩한 후에만 표시됩니다.

오류가 있는 경우 WeChat은 다음과 같이 JSON 데이터 패킷을 반환합니다(예: 잘못된 openid):

{"errcode":40003,"errmsg":"valid openid "}

첨부 파일 : 인증 자격 증명(access_token) 검증 유효한가요

요청 방법

http: GET(https 프로토콜을 사용하세요) https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID

Parameter Description eterParameter eterDescription

Access_Token반환 지침{ "errcode":0,"errmsg":"ok"} JSON 오류 발생 시 반환 예: { "errcode":40003 ,"errmsg":"잘못된 openid"}
Web 페이지 권한 부여 인터페이스 전화 인증서, 참고 :이 Access_Token
올바른 JSON 반환 결과: