A WeChat Public Platform lançou recentemente a autenticação do WeChat e você pode obter permissões avançadas de interface após a autenticação. Muitos amigos falham ou não conseguem entender seu conteúdo ao usá -lo. Hoje, o editor do New Technology Channel fornece autorização da página da Web WeChat Development para obter informações básicas do usuário.
1. O que é OAuth2.0
Site oficial: http://oauth.net/ http://oauth.net/2/
Definição autorizada: OAuth é um protocolo aberto para permitir a autorização segura em um método simples e padrão de aplicativos Web, Mobile e Desktop.
Oauth é um contrato aberto que permite que os usuários obtenham recursos privados (como informações pessoais, fotos, vídeos, listas de contatos) armazenadas por aplicativos de terceiros de maneira segura e padrão (como informações pessoais do usuário, fotos, vídeos, listas de contatos) armazenados em um site, um aplicativo móvel ou desktop sem fornecer nome de usuários e senha para terceiros.
OAuth 2.0 é a próxima versão do protocolo OAuth, mas não é compatível com o OAuth 1.0. O OAuth 2.0 se concentra na simplicidade dos desenvolvedores de clientes, fornecendo um processo de certificação dedicado para aplicativos da Web, aplicativos de desktop e telefones celulares e dispositivos de sala de estar.
O OAuth permite que os usuários forneçam um token em vez de um nome de usuário e senha para acessar os dados que armazenam em um provedor de serviços específico. Cada token autoriza um site específico (por exemplo, um site de edição de vídeo) a acessar um recurso específico (por exemplo, apenas um vídeo em um determinado álbum) dentro de um período específico de tempo (por exemplo, nas próximas 2 horas). Dessa forma, o OAuth permite que os usuários autorizem sites de terceiros a acessar as informações que armazenam em outro provedor de serviços sem compartilhar todas as suas permissões de acesso ou seus dados.
A API Sina Weibo atualmente também usa oauth 2.0.
2. Autorização da plataforma pública do WeChat OAuth2.0
As etapas detalhadas para a autorização da plataforma pública do WeChat OAuth2.0 são as seguintes:
1. Os usuários seguem contas públicas do WeChat.
2. A conta pública do WeChat fornece o URL da página de autorização de solicitação do usuário.
3. O usuário clica no URL da página de autorização e iniciará uma solicitação ao servidor.
4. O servidor pergunta ao usuário se ele concorda em autorizar a conta pública do WeChat (não existe essa etapa quando o escopo é snapi_base)
5. O usuário concorda (não existe essa etapa quando o escopo é snapi_base)
6. O servidor passa o código para a conta pública do WeChat através de retorno de chamada
7. Obtenha código na conta pública do WeChat
8. A conta pública do WeChat solicita token de acesso ao servidor através do código
9. O servidor retorna o token de acesso e o OpenID para a conta pública do WeChat
10. A conta pública do WeChat solicita as informações do usuário ao servidor por meio do token de acesso (não existe essa etapa quando o escopo é SNSAPI_BASE)
11. O servidor envia as informações do usuário de volta à conta pública do WeChat (não existe uma etapa quando o escopo é snapi_base)
O Appid e o AppSecret usado podem ser encontrados no ID do desenvolvedor de desenvolvedor.
1. Configure o nome de domínio da página de retorno de chamada de autorização
Depois de inserir o plano de fundo da plataforma pública do WeChat, insira a tabela de permissões centrais do desenvolvedor, por sua vez, encontre a autorização da página da web para obter informações básicas do usuário.
Clique em Editar à direita.
A especificação de configuração de nomes de domínio para retorno de chamada de autorização é um nome de domínio completo e não inclui HTTP. Por exemplo, o nome de domínio que requer autorização da Web é: www.qq.com. Após a configuração, as páginas abaixo deste nome de domínio http://www.qq.com/music.html e http://www.qq.com/login.html podem executar a autenticação OAuth2.0. No entanto, http://pay.qq.com, http://music.qq.com e http://qq.com não podem executar a autenticação OAuth2.0.
Aqui preenchemos um nome de domínio secundário do aplicativo Baidu do Fangbi Studio como mascot.duapp.com
Se o seu URL não estiver na lista negra, ele aparecerá no topo
Em seguida, a configuração do nome do domínio é bem -sucedida.
2. Autorização do usuário e obtenha código
No diretório raiz do nome de domínio, crie um novo arquivo, nomeie -o OAuth2.php e seu conteúdo é
<?
Vamos primeiro entender como construir a página de autorização:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=redirect_uri&Response_type=code&scope=scope&state=state#wechat_redirect
Descrição do parâmetro
| parâmetro | deve | ilustrar |
|---|---|---|
| Appid | sim | O identificador único da conta oficial |
| Redirect_uri | sim | Endereço de link de retorno de chamada redirecionado após autorização |
| Response_type | sim | Tipo de retorno, preencha o código |
| escopo | sim | Aplique o escopo da autorização, SNSAPI_BASE (nenhuma página de autorização aparece, apenas saltos, apenas o usuário openId pode ser obtido), SNSAPI_USERINFO (página de autorização pop -up, você pode obter o apelido, gênero e localização através do OpenID. E, mesmo que você não esteja seguindo, tanto quanto o usuário o autoriza, sua informação pode ser obtida) e, mesmo que você não esteja seguindo, o usuário que as autoriza, sua informação pode ser obtida. |
| estado | não | Após o redirecionamento, os parâmetros estaduais serão incluídos e os desenvolvedores podem preencher qualquer valores de parâmetros. |
| #wechat_redirect | não | Abra o link diretamente no WeChat e não preencha este parâmetro. Este parâmetro deve ser incluído ao fazer o redirecionamento da página 302 |
Escopo de autorização do aplicativo: Como o SNSAPI_BASE só pode obter o OpenID, ele não faz muito sentido, por isso usamos snapi_userinfo.
Endereço de retorno de chamada: preencha como o endereço do arquivo de OAuth2.php acabou de fazer o upload,
Parâmetros de estado: qualquer número, preencha 1 aqui
O URL da solicitação de construção é o seguinte:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http: //mascot.duapp.com/oauth2.php&ressonse_type=code&scope=snsapi_userinfo&state=1#wechat_redirect
Envie este link para o WeChat para abrir no navegador WeChat. Aqui, use o link A para encapsulá -lo da seguinte forma:
Bem -vindo ao Follow [Jinbao], o que pode tornar mais conveniente para você encontrar catering, roupas, lojas de departamento e lojas de salão de beleza que se adaptem aos seus desejos perto de você.
<a href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http: //mascot.duapp.com/oauth2.php&ressonse_type=code&scope=snsapi_userinfo&state=1#wechat_redirect">click Aqui para ligar </a>
Suporte técnico Fangbi Studio
Mostre o seguinte no WeChat
Depois de clicar na ligação, a interface de autorização do aplicativo aparece
Selecione Permitir, clique
Salte para Auth2.php Page e execute
eco $ _get ['code']
O código é exibido na interface. Neste momento, o link é obtido copiando o link no botão no canto superior direito:
http://mascot.duapp.com/oauth2.php?code=00b788e3b42043c8459a57a8d8ab5d9f&state=1
Temos o código com sucesso.
Nota: Se essa interface aparecer durante a ligação, significa que os parâmetros estão incorretos e você precisará voltar e verificar os parâmetros.
3. Use o código para trocar acessos_token
Como construir a página Access_Token para Exchange for Web Authorization:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=code&grant_type=authorization_code
Descrição do parâmetro
| parâmetro | É necessário | ilustrar |
|---|---|---|
| Appid | sim | O identificador único da conta oficial |
| Segredo | sim | A conta oficial AppSecret |
| código | sim | Preencha os parâmetros do código obtidos na primeira etapa |
| Grant_type | sim | Preencher como autorização_code |
Código: preencha aqui como o valor obtido na etapa anterior
O URL da solicitação de construção é o seguinte:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx88888888888888 &secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e code = 00B788E3B42043C8459A57A8D8AB5D9F & Grant_Type = Autorização
Você pode executar esta declaração diretamente no navegador:
(
Aqui está a chave, que é obter o código de dados JSON através do URL acima
$ ch = curl_init (); curl_setot ($ CH, Curlopt_url, $ url); Curl_SESTOPT ($ CH, Curlopt_ReTurnTransfer, 1); // exige que o resultado seja uma string e saída para a tela Curl_SESTOPT ($ CH, Curlopt_Header, 0); // não http canteiro acelerar eficiência curl_setot ($ CH, Curlot_UserAgent, 'Mozilla/5.0 (compatível; MSIE 5.01; Windows NT 5.0)'); Curl_SETOPT ($ CH, Curlopt_timeout, 15); Curl_SESTOPT ($ CH, Curlopt_ssSl_verifyPeer, false); // A solicitação HTTPS não verifica certificados e hosts curl_setopt ($ CH, CURLOPT_SSL_VERIFYHOST, false); $ output = curl_exec ($ CH); curl_close ($ ch); $ jsondecode = json_decode ($ output); // codifica seqüências de caracteres no formato json $ array = get_object_vars ($ jsondecode); // Converter para a matriz // As duas linhas vermelhas são o ponto -chave, para https, tenho lutado há mais de um dia eco $ matriz;
)
Obtenha os seguintes dados JSON:
{"access_token": "Oezxceiibsksxw0eoylieasr0gmyd1awcffdhgb4fhs_kkf2cotgj2cbnukqqvj-g0zwee5-ubj BZ941EOPQDQY5SS_GCS2Z40DNVU99Y5AI1BW2UQN--2JXOBLIM5D6L9RIMVM8VG8CBAILPWA8VW ", "Expires_in": 7200, "refresh_token": "Oezxceiibsksxw0eoylieasr0gmyd1awcffdhgb4fhs_kkf2cotgj2cbnukqqvj-g0zwee5-ubj BZ941EOPQDQY5SS_GCS2Z40DNVU99Y5CZPAWZKSIZ_6X_TFKLOXLU7KDKM2232WDXB3MSUZQ1A ", "OpenId": "olvppjqs9bhvzwpj5a-vtyax3GLC", "SCOPE": "SNSAPI_USERINFO", "}O formato de dados é interpretado da seguinte maneira:
| parâmetro | descrever |
|---|---|
| Access_token | Interface de autorização da Web Credenciais de chamada, Nota: Este Access_token é diferente do Access_Token suportado pelo Basic |
| expire_in | Access_Token Interface Chamada de tempo limite de credencial, unidade (segundos) |
| refresh_token | Atualização do usuário access_token |
| OpenId | Identificador exclusivo do usuário. Observe que, quando os usuários não seguirem a conta oficial, quando os usuários visitarem a página da web da conta oficial, eles também gerarão um OpenID exclusivo para usuários e contas oficiais. |
| escopo | O escopo da autorização do usuário, separado por vírgula (,) |
Então, trocamos com sucesso o access_token e o refresh_token através do código.
Atualizar acessos_token
O documento oficial menciona a função de refrescante access_token, mas isso não é uma obrigação. Você pode ignorá -lo pela primeira vez usando.
O método de solicitação de URL é o seguinte:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=appid&grant_type=refresh_token&refresh_token=refresh_token
Descrição do parâmetro
| parâmetro | É necessário | ilustrar |
|---|---|---|
| Appid | sim | O identificador único da conta oficial |
| Grant_type | sim | Preencha como refresh_token |
| refresh_token | sim | Preencha o parâmetro refresh_token obtido através do Access_token |
A estrutura é a seguinte:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=wx888888888888888&grant_type=refresh_token&refresh_token=oezxxceiibsxw0eoy lieasr0gmyd1awcffdhgb4fhs_kkf2cotgj2cbnukqqvj-g0zwee5-abjbz941eopq DQY5SS_GCS2Z40DNVU99Y5CZPAWZKSIZ_6X_TFKLOXLU7KDKM2232WDXB3MSUZQ1A
Executar dados JSON no mesmo formato no navegador
4. Use Access_Token para obter informações do usuário
Método de solicitação:
https://api.weixin.qq.com/sns/userinfo?access_token=access_token&openid=openid
Descrição do parâmetro
| parâmetro | descrever |
|---|---|
| Access_token | Interface de autorização da Web Credenciais de chamada, Nota: Este Access_token é diferente do Access_Token suportado pelo Basic |
| OpenId | ID único do usuário |
O URL é construído da seguinte maneira:
https://api.weixin.qq.com/sns/userinfo?access_token=oezxceiibsksxw0eoylieasr0gmyd1awcffdhgb4fhs_kkf2cotgj2cbnukqqVj-g0z WEE5-UBJBZ941EOPQDQY5SS_GCS2Z40DNVU99Y5AI1BW2UQN--2JXOBLIM5D6L9RIMVM8VG8CBAILPWA8VW & OPENID = olvppjqs9bhvzwpj5a-vty
Você pode executar esta declaração diretamente no navegador:
Obtenha os seguintes dados JSON:
{ "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc", "nickname": "fangbi", "sex": 1, "language": "zh_CN", "city": "Shenzhen", "province": "Guangdong", "country": "CN", "headimgurl": "http://wx.qlogo.cn/mmmopen/utpkyf69vabcrrlbuspsdqn38doibckru6samcsnx558etalvm8pym6jlegzorh67hyzbizxpxu4bk1xnwzsxb3Cs4Cs4QUs4QBS4QUs4QBS4CS4QUs4QBS4QUs4QBS4QUMBLEMTRO.Interpretação de parâmetros:
| parâmetro | descrever |
|---|---|
| OpenId | ID único do usuário |
| apelido | Apelido de usuário |
| sexo | O gênero do usuário, quando o valor é 1, é homem, quando o valor é 2, é feminino e quando o valor é 0, é desconhecido |
| província | Províncias preenchidas no perfil de usuário |
| cidade | A cidade preencheu as informações pessoais dos usuários comuns |
| país | País, como a China é CN |
| Headimgurl | Avatar do usuário, o último valor representa o tamanho do avatar quadrado (existem 0, 46, 64, 96 e 132 valores são opcionais e 0 representa 640*640 Avatar quadrado). Este item está vazio quando o usuário não tem avatar. |
| privilégio | Informações sobre privilégios do usuário, JSON Array, como o usuário do WeChat Woka (ChinaUnicom) |
Isso é consistente com minhas informações pessoais do WeChat
Nesse ponto, sem inserir minha conta e senha, a conta pública do WeChat Jinbao obteve minhas informações pessoais, incluindo meu apelido, gênero, país, província, cidade, avatar pessoal e lista de privilégios.
Uma certificação completa do OAuth2 está completa.
3. Demonstração detalhada
Siga o Fangbei Studio (consulte o código QR abaixo), responda "Autorização", retorne à mensagem gráfica e de texto, clique na imagem
Na página de confirmação, clique em "Permitir"
O resultado obtido aparece (a imagem está sujeita a processamento anti-roubo, para que não possa ser exibido diretamente, você pode baixá-lo localmente e exibi-lo)
O exposto acima é sobre as informações sobre o desenvolvimento da Web da autorização do WeChat para obter informações básicas do usuário, a autorização da Web para obter informações do usuário e as informações relevantes serão adicionadas no futuro. Obrigado pelo seu apoio do novo canal de tecnologia!