>  기사  >  백엔드 개발  >  PHP는 WeChat 웹페이지 로그인 인증 개발을 구현합니다.

PHP는 WeChat 웹페이지 로그인 인증 개발을 구현합니다.

不言
不言원래의
2018-04-19 15:26:4714592검색

이 글은 주로 PHP로 WeChat 웹페이지 로그인 인증 개발을 구현하는 방법을 소개합니다. 이제 모든 사람과 공유할 수 있습니다. 도움이 필요한 친구들이 참고할 수 있습니다

WeChat 개방형 플랫폼과 공개 플랫폼의 차이점

1. 공개 플랫폼은 셀프 미디어, 미디어 등 일반 사용자를 대상으로 하며 기업 공식 WeChat 공개 계정의 운영자가 사용합니다. 물론 귀하의 팀이나 회사가 일부 콘텐츠를 개발할 힘이 있다면. 사용자 정의 메뉴, 자동 응답, 쿼리 기능과 같은 공개 플랫폼의 인터페이스를 호출할 수도 있습니다. 현재 대부분의 WeChat은 인증을 통과한 후 이를 수행하고 있습니다.

mp.weixin.qq.com


2. 개방형 플랫폼은 개발자 및 타사 독립 소프트웨어 개발자를 위한 것입니다. 개발 플랫폼의 가장 큰 개방성은 위챗 로그인이라고 생각합니다. 당시 Tencent는 통합 로그인을 구현하기 위해 많은 노력을 기울이지 않았습니다. 그 결과 이제 각 웹사이트는 로그인 메커니즘을 개발해야 합니다. 다행히도 이제 상황을 이해하게 되었습니다. 개발자나 소프트웨어 개발자는 WeChat이 제공하는 플랫폼과 인터페이스를 통해 기업에 적합한 전자상거래 웹사이트를 개발하고, QR 코드를 스캔하여 게임 인터페이스에 진입한 후 상품을 구매할 수 있습니다. 물론 후속 개방형 플랫폼에서는 결제 인터페이스가 개방될 예정이므로 Pocket Tong과 같은 소프트웨어 개발자는 대기업과 중소기업을 대상으로 WeChat 매장과 같은 서비스와 소프트웨어를 제공할 수 있습니다.

open.weixin.qq.com

공개 플랫폼은 서비스 계정 가입 계정에 대한 관리 및 개발 백엔드입니다.

간단히 말하면, 개발 플랫폼은 휴대폰에 설치된 소프트웨어의 콘텐츠를 친구들과 원클릭으로 공유하는 것을 실현하는 것입니다.

아래의 제3자 로그인은 다음의 기능을 기반으로 합니다. 오픈 플랫폼 (open.weixin.qq.com)

작업 준비

웹사이트 애플리케이션 WeChat 로그인은 OAuth2.0 프로토콜 표준을 기반으로 구축된 WeChat OAuth2.0 공인 로그인 시스템입니다.

WeChat OAuth2를 수행하기 전에 WeChat OAuth2.0 승인된 로그인 액세스를 수행하기 전에 WeChat 오픈 플랫폼에 개발자 계정을 등록하고 승인된 웹사이트 신청서를 받은 후 해당 AppID와 AppSecret을 획득하고 WeChat 로그인을 신청하고 검토를 통과한 후 , 액세스 프로세스가 시작될 수 있습니다.

승인 프로세스 설명

WeChat OAuth2.0 승인된 로그인을 통해 WeChat 사용자는 WeChat ID를 사용하여 제3자 애플리케이션 또는 웹사이트에 안전하게 로그인할 수 있습니다. WeChat OAuth2.0에 연결하면 제3자가 얻을 수 있습니다. 사용자 인터페이스 호출 자격 증명(access_token)을 사용하여 WeChat 개방형 플랫폼 권한 부여 관계 인터페이스를 호출할 수 있습니다. 이를 통해 WeChat 사용자의 기본 공개 정보를 얻고 사용자가 기본 공개 기능을 구현하는 데 도움이 됩니다.

WeChat OAuth2.0 인증 로그인은 현재 Authorization_code 모드를 지원하며, 이는 서버측 애플리케이션 인증에 적합합니다. 이 모델의 전체 프로세스는 다음과 같습니다.

 1. 제3자가 WeChat 승인 로그인 요청을 시작합니다. WeChat 사용자가 제3자 애플리케이션 승인을 허용한 후 WeChat은 애플리케이션을 실행하거나 제3자 웹사이트로 리디렉션합니다. 인증 임시 티켓 코드 매개변수를 가져옵니다.

 2. code 매개변수를 통해 AppID 및 AppSecret을 추가하고 API를 통해 access_token을 교환합니다.

 3. access_token을 통해 인터페이스 호출을 수행하여 사용자의 기본 데이터 리소스를 얻거나 사용자가 기본 구현을 지원합니다. 운영.

access_token 시퀀스 다이어그램 가져오기:


1단계: 코드 요청

제3자가 웹사이트 애플리케이션 인증을 사용하여 로그인하기 전에 해당 웹페이지 인증 범위(범위=snsapi_login)를 얻었는지 확인하세요. , PC에서 전달할 수 있습니다. 다음 링크를 엽니다.
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

"The 링크에 액세스할 수 없습니다." 오류가 발생하는 경우 매개변수가 오류 입력인지 확인하세요. 예를 들어 리디렉션_uri의 도메인 이름이 검토 중에 입력한 승인된 도메인 이름과 일치하지 않거나 범위가 snsapi_login이 아닙니다.

사용자 인증이 허용된 후 코드 및 상태 매개변수를 사용하여 리디렉션_uri URL로 리디렉션됩니다

Parameters

필요합니까?

애플리케이션 고유 식별자

redirect_uri입니다.

리디렉션 주소 및 요구사항입니다. UrlEncode

response_type

코드를 입력하세요

scope

입니다.

응용 프로그램 승인 범위가 여러 개인 경우 별도. 웹 애플리케이션의 경우 현재 snsapi_login

state

No

만 입력할 수 있습니다.

요청 및 콜백 상태를 유지하고 요청 승인 후 그대로 제3자에게 다시 가져오는 데 사용됩니다. 이 매개변수는 CSRF 공격(교차 사이트 요청 위조 공격)을 방지하는 데 사용할 수 있습니다. 이 매개변수는 검증을 위해 간단한 난수와 세션으로 설정할 수 있습니다.

반환 설명
redirect_uri?code=CODE&state=STATE
사용자가 인증을 금지하는 경우 리디렉션되지 않습니다. 코드 매개변수를 가져오면 상태 매개변수만 가져옵니다
redirect_uri?state=STATE

요청 예시

redirect_uri?code=CODE&state=STATE

若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数

redirect_uri?state=STATEYihaodian 웹사이트 애플리케이션에 로그인

https://passport .yhd.com/wechat /login.do

열린 후 Yihaodian은 상태 매개변수를 생성하고

https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F로 이동합니다. %2Fpassport.yhd.com%2Fwechat%2Fcallback.do&response_type=code&scope=

snsapi_login

&state=3d6be0a4035d839573b04816624a415e#wechat_redirect


https://open.weixin.qq.com/connect/qrconnect?appid=wx bdc5610 cc59c1631&redirect_uri=https%3A% 2F%2Fpassport.yhd .com%2Fwechat%2Fcallback.do&response_type=code&scope=snsapi_login&state=eb407f95fbc413185209fd85931761c2#wechat_redirectWeChat 사용자가 WeChat을 사용하여 QR 코드를 스캔하고 로그인을 확인한 후 PC가

로 이동합니다.

https://passport. yhd.com/ wechat /callback.do?code=CODE&state=3d6be0a4035d839573b04816624a415e

코드를 얻는 두 번째 방법은 웹사이트에서 WeChat 로그인 QR 코드를 자체 페이지에 삽입하는 것을 지원합니다. 승인을 받고 코드를 JS를 통해 웹사이트로 반환합니다.

JS WeChat 로그인의 주요 목적: 웹사이트는 사용자가 WeChat 도메인으로 이동하여 로그인했다가 다시 돌아올 필요 없이 웹사이트 내에서 로그인을 완료하여 WeChat 로그인의 유창함과 성공률을 높일 수 있기를 바랍니다. 웹사이트에 포함된 QR 코드 WeChat 로그인을 위해 JS를 구현하는 방법: 1단계: 먼저 다음 JS 파일을 페이지에 도입합니다(https 지원):

65e6de569e06a4e14cd1573348a381e42cacc6d41bbb37262a98f745aa00fbf0

2단계: WeChat 로그인이 필요한 다음 JS 개체 인스턴스화:
   varobj = new WxLogin({
                            id:"login_container", 
                            appid: "", 
                            scope: "", 
                            redirect_uri: "",
                            state: "",
                            style: "",
                            href: ""
                          });

Parametersidappid 입니다. scopeNohrefNo

꼭 필요한가요

설명

타사 페이지에 표시된 QR 코드의 컨테이너 ID

애플리케이션 고유 식별자는 WeChat 개방형 플랫폼에서 검토를 위해 애플리케이션을 제출한 후 얻습니다.

애플리케이션 승인 범위입니다. 여러 범위 Commas (,)로 분리되어 있습니다. 아니요

보류 요청 및 콜백 상태는 승인 요청 후 그대로 제3자에게 반환됩니다. 이 매개변수는 CSRF 공격(교차 사이트 요청 위조 공격)을 방지하는 데 사용할 수 있습니다. 이 매개변수는 검증을 위해 간단한 난수와 세션으로 설정할 수 있습니다.

"검정색"과 "흰색"으로 제공되며 기본값은 검정색 텍스트 설명입니다. 자세한 내용은 문서 하단의 FAQ를 참조하세요

사용자 정의 스타일 링크, 제3자가 실제 필요에 따라 기본 스타일을 재정의할 수 있습니다. 자세한 내용은 문서 하단의 FAQ를 참고해주세요

매개변수 설명
2단계: 코드를 통해 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

매개변수 설명
입니다 예첫 번째 단계에서 얻은 코드 매개변수를 입력하세요예authorization_code를 입력하세요올바른 반환:{ <br>"access_token":"ACCESS_TOKEN", <br>"만료 _in" :7200, <br>"refresh_token":"REFRESH_TOKEN",<br>"openid":"OPENID" , <br>"scope":"SCOPE","unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL"}Description

Parameter

필요한가요

Description

appid

앱만 해당 로고는 WeChat 오픈 플랫폼에서 검토 신청서를 제출하고 검토를 통과한 후 획득됩니다.

grant_type

반환 지침

Parameters

access_token{ &lt;br&gt;"access_token":"ACCESS_TOKEN", &lt;br&gt;"expires_in":7200, &lt;br&gt;"refresh_token":"REFRESH_TOKEN",<br>"openid":"OPENID", &lt;br&gt;"scope":"SCOPE","unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL"}

参数

说明

access_token

接口调用凭证

expires_in

access_token接口调用凭证超时时间,单位(秒)

refresh_token

用户刷新access_token

openid

授权用户唯一标识

scope

用户授权的作用域,使用逗号(,)分隔

 unionid

只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。

错误返回样例:

{"errcode":40029,"errmsg":"invalidcode"}

인터페이스 호출 자격 증명

expires_in

access_token 인터페이스 호출 자격 증명 시간 초과, 단위( 둘째)

refresh_tokenaccess_token은 승인에 대한 호출입니다. 관계 인터페이스 자격 증명은 access_token의 짧은 유효 기간(현재 2시간)으로 인해 access_token 시간이 초과되면 새로 고침을 위해 새로 고침을 수행할 수 있습니다. access_token 새로 고침 결과는 두 가지입니다. 매개변수 설명가 필수인가요? 는
사용자 새로 고침 액세스 _token

openid

인증된 사용자의 고유 식별자

scope
사용자가 승인한 범위 , 쉼표(,)로 구분된 이 필드는 플랫폼 계정이 개설된 후에만 표시됩니다.

오류 반환 예:
{"errcode":40029,"errmsg":"invalidcode"}

access_token 유효 기간을 새로 고치세요
1. 그런 다음 Refresh_token은 새로운 access_token, 새로운 시간 초과를 얻습니다.

2. access_token이 만료되지 않은 경우 Refresh_token은 access_token을 변경하지 않지만 시간 초과는 새로 고쳐지며 이는 access_token을 갱신하는 것과 같습니다.
refresh_token은 유효 기간이 깁니다(30일). Refresh_token이 만료되면 사용자가 이를 다시 승인해야 합니다.

요청 방법
첫 번째 단계의 코드를 얻은 후 다음 링크를 새로 고침 토큰으로 요청하세요:

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

매개변수

🎜🎜🎜 애플리케이션🎜🎜🎜🎜🎜🎜의 고유 식별자입니다. grant_type🎜🎜🎜🎜예🎜🎜🎜🎜 Refresh_token을 입력하세요🎜🎜🎜🎜🎜🎜refresh_token🎜🎜🎜🎜Yes🎜🎜🎜🎜access_token을 통해 얻은 Refresh_token 매개변수를 입력하세요🎜🎜🎜🎜🎜
반환 지침

올바른 반환:

{ <br>"access_token":"ACCESS_TOKEN", <br>"expires_in":7200, <br>"refresh_token":"REFRESH_TOKEN", "openid":"OPENID", <br>"scope":"SCOPE" <br>}{ &lt;br&gt;"access_token":"ACCESS_TOKEN", &lt;br&gt;"expires_in":7200, &lt;br&gt;"refresh_token":"REFRESH_TOKEN", &lt;br&gt;"openid":"OPENID", &lt;br&gt;"scope":"SCOPE" &lt;br&gt;}

参数

说明

access_token

接口调用凭证

expires_in

access_token接口调用凭证超时时间,单位(秒)

refresh_token

用户刷新access_token

openid

授权用户唯一标识

scope

用户授权的作用域,使用逗号(,)分隔

错误返回样例:

{"errcode":40030,"errmsg":"invalidrefresh_token"}

Parameters

Description

access_token

인터페이스 호출 바우처

expires_inopenid승인된 사용자 고유 식별자사용자 승인 범위, 쉼표(,)로 구분됨{"errcode":40030,"errmsg":"invalidrefresh_token"}참고: 2. 클라이언트에 저장된 인터페이스 호출(사용자 로그인 상태와 동일)을 시작하기 위해 악의적으로 access_token을 획득한 후 사용자 데이터가 유출될 수 있으며 사용자 WeChat 관련 인터페이스 기능이 악의적으로 시작될 수 있습니다. 앱 클라우드 서버에 비밀 및 사용자 데이터(예: access_token)를 넣는 것이 권장되며, 클라우드 전송 인터페이스가 요청을 호출합니다. access_token을 얻은 후 다음 전제 조건에 따라 인터페이스 호출을 수행합니다. 2. 타사 응용 프로그램 계정에 해당하는 인터페이스 범위(scope)에 권한을 부여합니다.

access_token 인터페이스 호출 바우처 시간 초과, 단위(초) )

refresh_token

사용자 새로 고침 access_token

scope

오류 반환 예:

1. Appsecret은 애플리케이션 인터페이스에서 사용하는 키이며 누출로 인해 애플리케이션 데이터가 누출될 수 있습니다. , 애플리케이션 사용자 데이터 유출 및 기타 고위험 결과, 악의적으로 도난당할 가능성이 매우 높습니다(예: Appsecret을 얻기 위한 디컴파일)

3. 사용자가 타사 애플리케이션을 인증하기 위한 자격 증명, access_token을 새로 고치는 데 사용되지만 유출은 access_token 유출과 동일하며 위험은 위와 동일합니다.

3단계: access_token을 통해 인터페이스 호출

1. access_token이 유효하고

인터페이스 범위(scope)에 대해 호출할 수 있는 인터페이스는 다음과 같습니다.

🎜🎜 권한 범위(scope) 🎜🎜🎜🎜🎜🎜Interface🎜🎜🎜🎜🎜🎜인터페이스 설명🎜 🎜🎜 🎜 ㅋㅋㅋ 🎜 🎜🎜access_token 사용 새로 고침 또는 갱신🎜 ​​🎜 🎜🎜🎜🎜/sns/auth🎜🎜🎜🎜access_token 유효성 확인🎜🎜🎜🎜🎜🎜snsapi_userinfo🎜🎜🎜🎜/sns/userinfo🎜🎜🎜🎜사용자 개인 정보 가져오기 🎜 🎜🎜🎜🎜

그중 snsapi_base는 기본 인터페이스에 속합니다. 애플리케이션에 이미 다른 범위 권한이 있는 경우 기본적으로 snsapi_base 권한을 갖게 됩니다. snsapi_base를 사용하면 모바일 웹 페이지 인증이 사용자 인증을 요청하기 위해 인증 로그인 페이지로 점프하는 동작을 우회하고 인증 임시 티켓(코드)을 사용하여 타사 웹 페이지로 직접 점프할 수 있습니다. 범위(scope)만 snsapi_base 이므로 사용자 인증이 필요한 데이터 및 기본 기능을 얻을 수 없습니다.

F.A.Q
1. 승인된 임시 티켓(코드)이란 무엇인가요?

답변: 제3자가 access_token을 얻으려면 코드를 사용해야 합니다. 코드의 제한 시간은 10분입니다. 코드는 access_token으로 한 번만 성공적으로 교환될 수 있으며 그 이후에는 유효하지 않게 됩니다. 코드의 임시 및 일회성 특성으로 인해 WeChat 인증 로그인의 보안이 보장됩니다. 제3자는 https 및 상태 매개변수를 사용하여 자체 인증된 로그인의 보안을 더욱 강화할 수 있습니다.

2. 승인 범위는 무엇인가요?

답변: 승인 범위(범위)는 사용자가 제3자에게 승인한 인터페이스 권한을 나타냅니다. 해당 범위를 사용하려면 제3자 애플리케이션이 WeChat 개방형 플랫폼에 적용해야 하며, 그런 다음 설명된 방법을 사용해야 합니다. 사용자가 권한을 부여할 수 있도록 문서에서 사용자가 권한을 부여한 후 해당 access_token을 얻은 후에만 인터페이스를 호출할 수 있습니다.

3. 웹사이트에 삽입된 QR 코드를 사용하여 WeChat 로그인을 위한 JS 코드에서 스타일 필드의 역할은 무엇인가요?

답변: 타사 페이지의 색상 스타일은 밝거나 어두울 수 있습니다. 타사 페이지의 배경이 밝은 경우 스타일 필드는 "검은색" 값을 제공해야 합니다(또는 이를 제공하지 않으면 검정색이 기본값입니다). 값), 해당 WeChat 로그인 텍스트 스타일은 검은색입니다. 관련 효과는 다음과 같습니다.

"white" 값이 제공되면 해당 텍스트 설명이 흰색으로 표시되어 어두운 배경에 적합합니다. 관련 효과는 다음과 같습니다.

4. 웹사이트에 QR 코드가 삽입된 WeChat 로그인 JS 코드에서 href 필드의 역할은 무엇인가요?

답변: 제3자가 WeChat 팀에서 제공한 기본 스타일이 자체 페이지 스타일과 일치하지 않는다고 판단하는 경우 자체 스타일 파일을 제공하여 기본 스타일을 재정의할 수 있습니다. 예를 들어 제3자가 기본 QR 코드가 너무 크다고 느끼는 경우 관련 CSS 스타일 파일을 제공하고 href 필드에 링크 주소를 입력할 수 있습니다.

.impowerBox .qrcode {width:200px;}<br>.impowerBox .title {display: none;}<br>.impowerBox .info {width: 200px;}<br>.status_icon {displaynone}<br>.impowerBox .status {text-align: center;} 

관련 효과는 다음과 같습니다.

사용자 개인정보 획득(UnionID 메커니즘)
인터페이스 설명

이 인터페이스는 사용자 개인정보를 획득하는 데 사용됩니다. 개발자는 OpenID를 통해 기본적인 사용자 정보를 얻을 수 있습니다. 특히 주의할 점은 개발자가 다수의 모바일 애플리케이션, 웹사이트 애플리케이션, 공개 계정을 보유하고 있는 경우, 동일한 WeChat 하의 모바일 애플리케이션이라면 사용자의 기본 정보에서 Unionid를 획득하여 사용자를 고유하게 구별할 수 있다는 점입니다. 개방형 플랫폼 계정, 웹사이트 애플리케이션 및 공개 계정에서 사용자의 유니온 ID는 고유합니다. 즉, 동일한 사용자의 경우 동일한 WeChat 오픈 플랫폼의 다양한 애플리케이션에 대해 Unionid가 동일합니다.

요청 설명

http 요청 방법: GET

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

매개변수 설명

Parameters

꼭 필요한가요

Instructions

access_token

자격 증명을 호출하는 것입니다

openid

의 ID입니다. 현재 개발자 계정에 고유한 일반 사용자

반환 지침

올바른 Json 반환 결과:

{ <br>"openid":"OPENID",<br>"nickname":"NICKNAME",<br>"sex":1 , <br>"지방":"PROVINCE",<br>"도시":"CITY",<br>"국가":"COUNTRY",<br>"headimgurl":"http:// wx .qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",<br>"권한":[<br>"PRIVILEGE1", />"PRIVILEGE2"<br>],<br>"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"<br><br>}{ &lt;br&gt;"openid":"OPENID",<br>"nickname":"NICKNAME",<br>"sex":1,<br>"province":"PROVINCE",<br>"city":"CITY",<br>"country":"COUNTRY",<br>"headimgurl":"http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",<br>"privilege":[<br>"PRIVILEGE1", &lt;br&gt;"PRIVILEGE2"<br>],<br>"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"<br><br>}

参数

说明

openid

普通用户的标识,对当前开发者帐号唯一

nickname

普通用户昵称

sex

普通用户性别,1为男性,2为女性

province

普通用户个人资料填写的省份

city

普通用户个人资料填写的城市

country

国家,如中国为CN

headimgurl

用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空

privilege

用户特权信息,json数组,如微信沃卡用户为(chinaunicom)

unionid

用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。

错误的Json返回示例:

{ &lt;br&gt;"errcode":40003,"errmsg":"invalid openid"<br>}

ParametersDescription idnicknamesex지방

일반 사용자 식별, 맞죠 현재 개발자 계정에는

일반 사용자 닉네임

일반 사용자 성별, 1은 남성, 2는 여성

만 있습니다.

🎜🎜일반 사용자의 개인정보가 입력된 지방🎜🎜🎜🎜🎜🎜city🎜🎜🎜🎜일반 사용자의 개인정보가 입력된 시🎜🎜🎜🎜🎜🎜country🎜🎜🎜🎜국가 CN이다 🎜🎜 🎜🎜🎜🎜 headimgurl🎜🎜🎜🎜사용자 아바타, 마지막 값은 정사각형 아바타 크기를 나타냅니다(0, 46, 64, 96, 132 값 사용 가능, 0은 640*640 정사각형 아바타를 나타냄). 사용자에게 아바타가 없으면 비어 있습니다🎜🎜🎜 🎜🎜🎜privilege🎜🎜🎜🎜사용자 권한 정보, json 배열, WeChat Woka 사용자(chinaunicom) 🎜🎜🎜🎜🎜🎜unionid🎜🎜🎜🎜사용자 통합 식별입니다. WeChat 오픈 플랫폼 계정을 사용하는 애플리케이션의 경우 동일한 사용자의 유니온 ID는 고유합니다. 🎜🎜🎜🎜🎜🎜잘못된 Json 반환 예: 🎜🎜{ <br>"errcode":40003,"errmsg":"invalid openid"<br>}🎜🎜통화 빈도 제한 🎜 🎜🎜🎜🎜🎜🎜인터페이스 이름🎜🎜🎜🎜🎜🎜빈도 제한🎜🎜🎜🎜🎜🎜🎜access_token 교환 코드🎜🎜🎜🎜10,000/분🎜 🎜 🎜🎜🎜🎜access_token 새로고침🎜🎜🎜🎜50,000/분🎜 🎜🎜🎜🎜🎜기본 사용자 정보 가져오기🎜🎜🎜🎜50,000/분🎜🎜🎜🎜🎜

代码示例:

第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;

通过code参数加上AppID和AppSecret等,通过API换取access_token;

通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

Login.php如下:

/*
返回  code state*/
$appid = 'wxea1xxxxxxxx20cb62';
$url = "https://open.weixin.qq.com/connect/qrconnect?appid=$appid&redirect_uri=http://zhiliaoke.com.cn/weixin.php&response_type=code&scope=snsapi_login&state=1&connect_redirect=1#wechat_redirect";

header('location:'.$url);

验证处理如下:

<?php
$code = $_GET['code'];
$state = $_GET['state'];//换成自己的接口信息
$appid = 'XXXXX';
$appsecret = 'XXXXX';
if (empty($code)) $this->error('授权失败');
 <br>
$token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code';
$token = json_decode(file_get_contents($token_url));
if (isset($token->errcode)) {
    echo '4a249f0d628e2318394fd9b75b4636b1错误:473f0a7621bec819994bb5020d29372a'.$token->errcode;
    echo '076402276aae5dbec7f672f8f4e5cc81c1a436a314ed609750bd7c7d319db4da错误信息:2e9b454fa8428549ca2e64dfac4625cd'.$token->errmsg;
    exit;
}
 <br>
$access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid='.$appid.'&grant_type=refresh_token&refresh_token='.$token->refresh_token;//转成对象
$access_token = json_decode(file_get_contents($access_token_url));
if (isset($access_token->errcode)) {
    echo '4a249f0d628e2318394fd9b75b4636b1错误:473f0a7621bec819994bb5020d29372a'.$access_token->errcode;
    echo '076402276aae5dbec7f672f8f4e5cc81c1a436a314ed609750bd7c7d319db4da错误信息:2e9b454fa8428549ca2e64dfac4625cd'.$access_token->errmsg;
    exit;
}
 <br>
 <br>
$user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token->access_token.'&openid='.$access_token->openid.'&lang=zh_CN';//转成对象
$user_info = json_decode(file_get_contents($user_info_url));
if (isset($user_info->errcode)) {
    echo '4a249f0d628e2318394fd9b75b4636b1错误:473f0a7621bec819994bb5020d29372a'.$user_info->errcode;
    echo '076402276aae5dbec7f672f8f4e5cc81c1a436a314ed609750bd7c7d319db4da错误信息:2e9b454fa8428549ca2e64dfac4625cd'.$user_info->errmsg;
    exit;
}
$rs =  json_decode(json_encode($user_info),true);//返回的json数组转换成array数组
//打印用户信息echo 'e03b848252eb9375d56be284e690e873';
 <br>
print_r($rs);echo 'bc5574f69a0cba105bc93bd3dc13c4ec';
 <br>
?>

 

微信第三方登录(静默授权和非静默授权)

用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。

微信的授权登录在日常应用中应用的非常广泛,越来越多的平台支持用户使用微信进行授权第三方登录

 使用微信授权登录有哪些优势/好处;

 1、用户量足够大,基本所有用户都会有微信,登录起来比较方便快捷;

 2、微信作为一个开放平台,为众多公众号/服务开放了许多服务接口,让公众号能够为自己的用户提供更加个性、更加优质的产品服务;

open id 和 union id ,这两个id有什么区别;

1、openid:在关注者与公众号产生消息交互后,公众号可获得关注者的openid,同一个用户,在不同公众号或移动应用下对应有不同open id标识;

2、union id:同一个用户,在不同公众号或移动应用下unionID相同;前提是,如若需要做多个公众号以及移动应用账户互通,得到唯一身份标识union id,则需要将多个公众号或移动应用在微信开放平台进行绑定,然后我们才能给拿到unionid;

所以,如果某个应用或者服务,有联合登录甚至多个公众应用多账户互通,可以采用union id来进行账户体系的用户识别与合并;即微信平台可以通过union id 来进行基于多个公众号之间的账户体系互通与识别合并;

 微信联合登录是怎么登录的,有几种登录方式;微信联合登录和微信授权登录【授权登录(非静默授权)与静默授权】

微信联合登录;也就是我们常用的微信移动端/PC端之间的扫码登录,PC端用微信扫码登录,微信移动端确认授权登录后,应用可以从微信拿到用户的open id或union id,将微信获取的用户信息与自己账户体系中的用户身份进行关联;

授权登录:需要用户确认登录,这样可以通过用户的个人确认,获取用户全面的信息,无论是否关注相关微信公众号等都可以获取。

静默授权不需要用户确认,只需要用户访问某个网页,属于嵌套在普通网页里的授权形式,但是只能获取到用户的唯一标示openid和union id,无法拿到用户的微信头像、微信名称等个人信息,对于用户的简单认证还是很有用的。

如何通过微信账户体系来做多应用、多平台之间的账户互通体系;如果某个服务同时分布在多个公众号中,账户体系如何建立;如何做到用户身份唯一识别;

1)、同一用户不同公众号/应用下open id不同,同一用户不同公众号/应用下unionid相同;

2)、建立应用账户体系时,通过union来进行多应用/平台之间的用户账户体系识别与合并;

3)、多应用/平台建立账户体系时,需要做到唯一user id对应唯一union id;

특정 서비스에는 모바일 앱, PC 웹페이지 및 공용 계정 서비스가 포함됩니다. 사용자가 WeChat을 사용하여 로그인을 승인하는 데이터 흐름 프로세스는 무엇입니까?

1. 사용자는 애플리케이션 서비스를 통해 모바일 앱 서비스를 승인합니다. 이때, 해당 ID가 데이터베이스에 없으면 새로운 사용자로 식별되어 고유한 사용자 ID가 해당 유니온 ID에 해당합니다.

2 사용자는 WeChat을 통해 PC에서 QR 코드를 스캔하여 PC 서비스를 받기 위한 공동 로그인을 승인할 수 있습니다. 이때 이 ID가 발견되면 애플리케이션 서비스는 인터페이스를 통해 사용자의 조합 ID를 얻을 수 있습니다. 데이터베이스, PC 로그인 계정은 이전에 생성된 고유 사용자 ID 계정으로 병합됩니다.

3. 사용자는 서비스 공식 계정을 따르고 WeChat을 사용하여 애플리케이션 서버에 대한 로그인을 승인합니다. 이때 인터페이스를 통해 데이터베이스에서 발견됩니다. 이 ID를 사용하면 공식 계정에서 로그인한 계정이 이전에 생성된 고유 사용자 ID 계정에 병합됩니다. 웹 페이지 인증의 두 가지 범위

:

1. 인증된 로그인은 snsapi_base입니다. 범위에 의해 시작된 웹 페이지 인증은 페이지에 들어오는 사용자의 openid를 얻는 데 사용되며 자동으로 인증되어 콜백 페이지로 이동합니다. . 사용자가 인식하는 것은 콜백 페이지(종종 비즈니스 페이지)에 들어가는 것입니다. 특징: 사용자는 인식하지 못합니다. 2. 범위가 사용자의 기본 정보를 얻는 데 사용되기 때문에 웹 페이지 인증이 시작됩니다. . 그러나 이러한 승인을 위해서는 사용자가 수동으로 동의해야 하며, 사용자가 동의하였으므로 별도의 주의는 필요하지 않으며, 승인 후에는 사용자의 기본정보를 얻을 수 있습니다.

특수 시나리오의 자동 인증:

공식 계정을 팔로우한 사용자의 경우, 공식 계정의 세션이나 사용자 정의 메뉴에서 공식 계정의 웹 인증 페이지에 들어가면 범위가 snsapi_userinfo라도 자동 승인이 되며 사용자는 인식하지 못합니다.

웹 페이지 인증 프로세스:

1

, 사용자에게 인증 페이지에 들어가 인증에 동의하도록 안내하고, 코드를 얻습니다. WeChat 공개 계정에 인증 범위의 권한(범위 매개변수) 다음으로 사용자를 인증 페이지로 안내합니다참조 링크:

scope는 snsapi_base

참고: appid,redirect_uri,state는 백엔드와 협상되어야 합니다

https://open .weixin.qq.com/connect/oauth2/authorize ?appid="+wx_appid+"&redirect_uri="+api.wx_reg+"&response_type=code&scope=

snsapi_login,snsapi_userinfo

&state=1,0#wechat_redirect

범위는 snsapi_userinfo입니다 https://open.weixin.qq.com/ connect/oauth2/authorize?appid="+wx_appid+"&redirect_uri="+api.wx_reg+"&response_type=code&scope=snsapi_base,snsapi_userinfo&state=1,0#wechat_redirect


사용자가 승인에 동의한 후


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

2

, 웹 페이지 승인을 위한 교환 코드 access_token (백그라운드 작업) 페이지가 URL의 리디렉션_uri/?code=CODE&state=STATE로 다시 이동합니다. code코드는 웹페이지 인증 access_token으로 교환됩니다. 웹페이지 인증 범위가 snsapi_base인 경우, 이 단계에서는 웹페이지 인증 access_token을 얻는 동안 snsapi_base 스타일의 웹페이지 인증 프로세스도 여기서 끝납니다.

3: 개인정보는 필수입니다. 백그라운드는 코드를 통해 값을 가져와 작업을 위해 프런트 엔드로 반환합니다

관련 권장 사항:

php를 구현하여 WeChat 템플릿 메시지 푸시

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

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