公众号网页授权
打赏作者

laranetcloudcom

前提:我用的是测试号。
每次提示我去关注,按照道理来说,我不关注也可以授权。这是不是测试号的原因,如果是测试号的原因。

laranetcloudcom

没说完,不好意思,如果是测试号的原因,我记得之前我用测试号调用原生的微信就口是没有提示我去关注的。我记错了?此问题困惑好久。

JellyBool 回复 laranetcloudcom

第一,我没有用过测试号。第二,这个视频说的是 公众号网页授权,你说的不用关注是开放平台网页登录

laranetcloudcom 回复 JellyBool

解决了, 也非常感谢收到您的回复。是测试号的原因,测试号必须关注才可以授权,如果是认证过的公正号,不用关注也可获取用户信息。

storm19890129

jelly,我有个疑问,我用的测试号,配置文件WECHAT_OAUTH_SCOPES=snsapi_userinfo,但是收到的信息只有用户的openid,其他nickname,avatar等信息都是null, dd($user)后发现scope总是snsapi_base,甚至把OAuthAuthenticate里的值写死也不行? 我用的laravel 5.3,请问这是什么原因,是测试号引起的吗?

JellyBool 回复 storm19890129

嗯,有可能,你看看上面的评论。再者,不要 dd($user),直接 :

return $user;

这样看看有没有信息

storm19890129 回复 JellyBool

renturn $user 的结果还是只有openid,如果不是config的问题,那只能是测试号不允许使用snsapi_userinfo,谢谢Jelly!

JellyBool 回复 storm19890129

有可能是,这个 snsapi_userinfo 貌似是认证之后才可以用的。

twelife 回复 storm19890129

话说你网页授权信息 地址那里配置了没?

storm19890129

弄个公司的公众号试了下,微信的测试号只能使用snsapi_base,认证的可以使用snsapi_userinfo,不是代码有问题,大家注意

JellyBool 回复 storm19890129

恩恩,非常清晰,感谢感谢

charleskun 回复 storm19890129

我碰到跟你一样的问题了,我的是服务号,配置文件WECHAT_OAUTH_SCOPES=snsapi_userinfo,但是只能获取到openid,dd($user)后发现scope一直是snsapi_base

jzfan

讲讲支付啊。期待。

gityuh

开放平台的还没讲,唉…

kingofswing

Hi Mr.JellyBool : 关注overtrue大咖的laravel-wechat已久,最近安装Laravel 5.4 (后来加装了Redis包,配置为session存储)和laravel-wechat包,使用了测试公众号,在oauth微信网页授权这里遇到了麻烦,特请教Mr.JellyBool:想实现的功能是 用户关注某公众号,收到一个带url的图文信息,点击图片(图文信息),前往一个页面,在这个页面我想读取该用户的id nickanme avatar等内容(看过各位朋友的回复,知道了测试公众号只能读取openid的),但是现在的问题是,点击图文之后,出现进度条,然后报“redirect_uri 参数错误”。

我按照overtrue/laravel-chat github页面的提示,做了几下操作:
1)在kernel.php中,路由中间件增加了wechat.oauth段。
2)新增加了路由:


//...
Route::group(['middleware' => ['web', 'wechat.oauth']], function () {
    Route::get('/profile', function () {
        $user = session('wechat.oauth_user'); // 拿到授权用户资料

        // dd($user); 这一行注释了。
    });
});

测试公众号后台,网页授权域名处,填写的是 xxxxxx.ngrok.io , 这个是我valet share出来的公网域名,设置时微信报绿色提示信息通过了。上面报redirect_uri错后,我又试着 把 Route改成:
Route::get(’/profile’,‘ProfileController@readprofile’); 把 $user = session(…) 搬到控制器的readprofile方法里,也是报同样的错误。

想请教一个JellyBool和各位,这个redirect_uri参数错误,问题出在哪里? 谢谢先!

JellyBool 回复 kingofswing

redirect_uri参数错误 这个参数配置错了吧

kingofswing 回复 JellyBool

@JellyBool 谢谢您及时的reply。问题是这个redirect_uri 填哪里啊? 我怎么没从 文档中看到?

JellyBool 回复 kingofswing

也有可能是这个 xxxxxx.ngrok.io 引起的。你询问一下微信的官方人员

kingofswing 回复 JellyBool

谢谢!!郁闷了2天了。_

Luking01 回复 kingofswing

我也遇到过这个问题 ,我的错误是因为JS接口安全域名填写错误了 应该是直接写域名的 我加上了http://

Luking01 回复 kingofswing

测试公众号只能读openid?为什么我的可以读出来全部信息啊?

jayin

@JellyBool 小程序用MINA这个框架写吗

jayin

JellyBool好想你更新一个小程序😄

JellyBool 回复 jayin

小程序的基本使用和一些常见的需求我基本OK了

但是写了小程序之后,感觉小程序太鸡肋了

jayin 回复 JellyBool

@JellyBool有没有学习小程序的入口

JellyBool 回复 jayin

看文档是最好的。。。

李宇哲Eric

JellyBool老师,请问如何在overtrue/laravel-wechat中配置公众号授权和网页授权的两个app-id和secret?

JellyBool 回复 李宇哲Eric

公众号授权和网页授权的两个app-id和secret?

啥意思?

李宇哲Eric 回复 JellyBool

就是说,当我申请了开放平台和公众平台,微信会给我两个不同的app-id,当我把公众平台绑定到开放平台后,想用overtrue来进行网页登录和公众号登录。但发现config里的wechat.php中,只有一个地方是配置app-id的。是不是overtrue只让开发者选择开放平台和公众平台之一来进行开发,而不能两个一起整合到一个项目里?

JellyBool 回复 李宇哲Eric

开放平台这个是第三方登录的意思吧,你使用超哥的 social 登录那个 package 就好了

mikezhang

有没有开放平台的教程?

ABOTGAO

我有个问题,就是微信网页授权这里按照教程的做法,可是为什么微信会提示无法打开网页?

hedeqiang9436

我有个问题 不关测试号的事 我在env文件配置了

WECHAT_OAUTH_SCOPES=snsapi_userinfo 

但是请求的还是snsapi_base 如果我在路由中这样就可以

Route::group(['middleware' => ['web', 'wechat.oauth:snsapi_userinfo']], function () {
})
JellyBool 回复 hedeqiang9436

就是配置文件的缓存呗,清一下缓存就好了吧

hedeqiang9436 回复 JellyBool

恩恩 ,我试试看

hedeqiang9436 回复 JellyBool

应该是缓存的问题 , 能否在多录制一些视屏,比如支付,红包什么的,感觉好多人能用到

foxriver123 回复 hedeqiang9436

mark一下

f4cklangzi

我用的测试号,tp框架,代码如下:
$options = C(‘OPTIONS’);
app=newApplication(app = new Application(options);
if (!cookie(‘openid’)){
$targetCallBackUrl = $customeUrl = “http://” . $_SERVER[“HTTP_HOST”] . $_SERVER[“REQUEST_URI”].’?action=callBack’;
$targetUrl = $customeUrl = “http://” . $_SERVER[“HTTP_HOST”] . $_SERVER[“REQUEST_URI”].’?action=callBack’;
if (I(‘action’)==‘callBack’) {
user=user=app->oauth->user();
this>userInfo=this->userInfo=user->toArray();
cookie(‘openid’,$this->userInfo[‘id’]);
header(‘location:’. $targetUrl);
}else{
app>oauth>scopes([snsapiuserinfo])>redirect(app->oauth->scopes(['snsapi_userinfo'])->redirect(targetCallBackUrl)->send();
}
}else{
$userService = $app->user;
$this->openid = cookie(‘openid’);
$this->userInfo = userService>get(userService->get(this->openid)->toArray();
}
我测试一下午就报错说接口调用达到上限了,这是怎么回事呢?是不是这个认证过程有问题?

JellyBool 回复 f4cklangzi

不知道,不熟悉 TP 。。。

guiwushaonian

我也是测试号啊,没问题啊,可以使用snsapi_userinfo,获取用户的全部信息的,就是貌似没有微信询问授权的步骤,直接就成功返回用户的信息了

baby510112

@JellyBool
老师,能讲一下jssdk相关的吗?比如微信分享到朋友用 easywechat要怎么做?如果要整个站点几乎每个页面都要配置分享内容,例如文章 首页 某个列表页都需要配置不同的分享内容,如何封装会比较优雅?

seanyhu

JellyBool老师你好, 按照视频方法做之后,提示找不到OAuthAuthenticate类文件,但是在本地的vender文件夹中的overtrue文件夹中可以找到这个类,明明空间也是正确的,我用的是laravel5.5,错误提示:{“file”:“Container.php”,“line”:752,“message”:“Class Overtrue\LaravelWeChat\Middleware\OAuthAuthenticate does not exist”,您觉得会是什么原因?

JellyBool 回复 seanyhu

你用的是哪个版本的easywechat?

seanyhu 回复 JellyBool

overtrue/laravel-wechat 3.1.10 微信 SDK for Laravel
overtrue/socialite 1.3.0 A collection of OAuth 2 packa…
overtrue/wechat 3.3.22 微信SDK
谢谢您的回复,现在我的问题已经解决了,方法是把找不到的这个OAuthenticate文件复制一份放到Htttp下的middleware文件夹下,修改相应的命名空间就可以了。

现在我有一些小疑惑希望您能帮我解答:

  1. 使用视频里所用的方法之后,是不是就不需要再将用户的信息存入session中了呢?
  2. 如果需要的话,我如何在方法中获取用户信息 $user ?
jasonfish

有些疑惑,如果是网页授权,如何才能实现即可以使用用户名密码登录,又可以在微信公众号中直接登录(只有第一次需要登录后授权)?