php 微信登录 公众号 获取用户信息 微信网页授权

时间:2022-05-31 22:52:04

php 微信登录 公众号 获取用户信息 微信网页授权

先自己建立两个文件: index.php  和  getUserInfo.php

index.php

<?php
//scope=snsapi_userinfo实例
$appid=''; //填写你公众号的appid
$redirect_uri = urlencode ( 'http://fenlei.sun0758.com/WX/getUserInfo.php' ); //回调页面 getUserInfo.php 不能写错
$url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";
header("Location:".$url);

getUserInfo.php

<?php
header("Content-type: text/html; charset=utf-8");
$appid = ""; //填写你公众号的appid
$secret = ""; //填写你公众号的secret
$code = $_GET["code"]; //第一步:取得openid
$oauth2Url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code";
$oauth2 = getJson($oauth2Url); //第二步:根据全局access_token和openid查询用户信息
$access_token = $oauth2["access_token"];
$openid = $oauth2['openid'];
$get_user_info_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
$userinfo = getJson($get_user_info_url); //打印用户信息
print_r($userinfo); function getJson($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
return json_decode($output, true);
}

将网址: http://你的域名/index.php 生成一个二维码!便能制作扫描二维码登录了。

切记

1.  https://api.weixin.qq.com/sns/userinfo
2. https://api.weixin.qq.com/cgi-bin/user/info 
上面两个api都是获取用户信息的,并且传入的参数也是一样的,第一个是用户网页端,第二个使用公共号关注后获取用户信息,希望以后的小伙伴可以记住。不要跟我犯一样的错误了。
 
 
出现40001错误!
Appkey 和 Appstore正确前提下
 
1. 因为开放平台跟微信公共号不一样,开放平台是不存在用户关注微信公共号的
2. 请求登录的方式也不同
a) 开放平台请求方式通过网页端生成二维码用户通过微信客服端进行扫描登录
网页端扫描的请求为:https://open.weixin.qq.com/connect/qrconnect
b) 而公共号只要在手机上操作因此登录请求的API也不同
而公共号的网页请求则为:https://open.weixin.qq.com/connect/oauth2/authorize 
如果使用此链接为网页端微信登录她会提示你在微信客户端进行访问
c) 其次他们作用范围也是不相同的scope值(这个可以看微信的开发文档)
说了这么多那为什么会存在调用错api呢?
原因很简单因为微信公共号存在用户关注微信公共号,但是微信开放平台是跟网页进行关联就不存在关注公共号这个说法,所以如果在网页端应用调用公共号关注获取用户的api 必然会出现40001的错误就是不存在或者提示你的token有误。

php 微信登录 公众号 获取用户信息 微信网页授权的更多相关文章

  1. C&num; 脚本代码自动登录淘宝获取用户信息

    C# 脚本代码自动登录淘宝获取用户信息   最近遇到的一个需求是如何让程序自动登录淘宝, 获取用户名称等信息. 其实这个利用SS (SpiderStudio的简称) 实现起来非常简单. 十数行代码就可 ...

  2. C&num;微信公众号开发-高级接口-之网页授权oauth2&period;0获取用户基本信息(二)

    C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一) 中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法 ...

  3. 【微信公众号开发】【13】批量导出公众号所有用户信息到Excel

    前言: 1,一次拉取调用最多拉取10000个关注者的OpenID,当公众号关注者数量超过10000时,可通过填写next_openid的值,从而多次拉取列表的方式来满足需求 2,获取OpenID列表后 ...

  4. 微信小程序维护登录态与获取用户信息

    前言. 微信小程序的运行环境不是在浏览器下运行的.所以不能以cookie来维护登录态.下面我就来说说我根据官方给出的方法来写出的维护登录态的方法吧. 一.登录态维护 官方的文档地址:https://m ...

  5. 微信订阅号里实现oauth授权登录,并获取用户信息 &lpar;完整篇&rpar;

    摘要 这段时间一直有人问我,订阅号实现的oauth授权登录的问题,之前写的比较简单,很多人不明白.众所周知,微信公众号分订阅号.服务号.企业号:每个号的用途不一样,接口开放程度也不一样.微信还有个扯淡 ...

  6. php&comma;微信公众号&comma;获取用户地理位置 定位 经纬度

    <?php //php插件下载地址: https://files.cnblogs.com/files/fan-bk/jssdk_php.rar //建立一个php文件 require_once ...

  7. 微信公众号获取用户openId How to use cURL to get jSON data and decode the data&quest;

    w http://*.com/questions/16700960/how-to-use-curl-to-get-json-data-and-decode-the-data

  8. 关于微信里wx&period;getUserInfo获取用户信息都是拼音的转成中文方法

    加一个参数:lang:"zh_CN" 就可以了  1.  加在js里面 wx.getUserInfo({ lang:"zh_CN", success: func ...

  9. C&num;获取用户基本信息一(关注了公众号的用户)

    一.获取Code  假设我们需要网页授权的页面的地址为redirect_uri 需要获取Code的话我们第一步是跳转到授权地址,我们第一步便是获取拼接授权地址 --采用snsapi_base方式 pu ...

随机推荐

  1. C语言第三次作业

    #include<stdio.h>//1.三角形 int main() { printf("*\n"); printf("**\n"); print ...

  2. &period;NET C&num; 将 mdb 中数据读为 list&lt&semi;string&lbrack;&rsqb;&gt&semi; 其中 path 为数据库地址 ,sql 为查询语句

    using System.Data; using System.Data.OleDb; public static List<string[]> select_list(string pa ...

  3. Bootstrap系列 -- 20&period; 禁用状态

    Bootstrap框架的表单控件的禁用状态和普通的表单禁用状态实现方法是一样的,在相应的表单控件上添加属性“disabled” 在使用了“form-control”的表单控件中,样式设置了禁用表单背景 ...

  4. JAVA算法系列 快速排序

    java算法系列之排序 手写快排 首先说一下什么是快排,比冒泡效率要高,快排的基本思路是首先找到一个基准元素,比如数组中最左边的那个位置,作为基准元素key,之后在最左边和最右边设立两个哨兵,i 和 ...

  5. mysql 资料总结 长期更新

    http://blog.csdn.net/ww1982_0_0_0/article/details/9169613  引入employess

  6. linux环境c&plus;&plus;开发:ubuntu12&period;04使用llvm3&period;4&period;2

    什么是 clang/llvm/libc++[1] clang 是最近几年(在大财主苹果的支持下)发展得非常好的 C 家族语言 (包括C/C++/Obj-C/Obj-C++) 编译器前端,所谓前端,就是 ...

  7. cassandra高级操作之索引、排序以及分页

    本次就给大家讲讲cassandra的高级操作:索引.排序和分页:处于性能的考虑,cassandra对这些支持都比较简单,所以我们不能希望cassandra完全适用于我们的逻辑,而是应该将我们的逻辑设计 ...

  8. 【从无到有】JavaScript新手教程——2&period;分支结构和循环

    介绍完JS的简介和向量以及运算符,大家对JS也有了初步的了解和认识,今天带大家来看一下JS中常用的分支结构以及循环结构是怎么使用的 [JS中的分支结构] 一.[if-else结构] 1.结构写法: i ...

  9. (转)c&plus;&plus; 回调函数

    https://www.cnblogs.com/chenyuming507950417/archive/2012/01/02/2310114.html 今天讨论下C/C++中的回调函数. 在理解“回调 ...

  10. ResponderChain note

    http://ww3.sinaimg.cn/large/6b288462gw1evl4h40tfxj20sg0lc77k.jpg