Skip to content

Commit 724578b

Browse files
committed
添加模拟登录支持
1 parent 2574d25 commit 724578b

File tree

3 files changed

+70
-4
lines changed

3 files changed

+70
-4
lines changed

README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ WECHAT_PAYMENT_KEY_PATH
7575
WECHAT_PAYMENT_DEVICE_INFO
7676
WECHAT_PAYMENT_SUB_APP_ID
7777
WECHAT_PAYMENT_SUB_MERCHANT_ID
78+
WECHAT_ENABLE_MOCK
7879
```
7980

8081
3. 如果你习惯使用 `config/wechat.php` 来配置的话,将 `vendor/overtrue/laravel-wechat/src/config.php` 拷贝到`app/config`目录下,并将文件名改成`wechat.php`
@@ -210,6 +211,27 @@ _如果你在用 5.1 上面没有 'web' 中间件_
210211

211212
上面的路由定义了 `/user` 是需要微信授权的,那么在这条路由的**回调 或 控制器对应的方法里**, 你就可以从 `session('wechat.oauth_user')` 拿到已经授权的用户信息了。
212213

214+
## 模拟授权
215+
216+
有时候我们希望在本地开发完成后线上才真实的走微信授权流程,这将减少我们的开发成本,那么你需要做以下两步:
217+
218+
1. 在 config/wechat.php 中将:'enable_mock' 启用,不论你是用 `.env` 文件里 `WECHAT_ENABLE_MOCK=true` 或者其它什么方法都可以。
219+
2. 在 config/wechat.php 中配置 `mock_user` 为微信的模拟的用户资料:
220+
221+
```php
222+
'enable_mock' => env('WECHAT_ENABLE_MOCK', true),
223+
'mock_user' => [
224+
"openid" =>"odh7zsgI75iT8FRh0fGlSojc9PWM",
225+
"nickname" => "overtrue",
226+
"sex" =>"1",
227+
"province" =>"北京",
228+
"city" =>"北京",
229+
"country" =>"中国",
230+
"headimgurl" => "http://wx.qlogo.cn/mmopen/C2rEUskXQiblFYMUl9O0G05Q6pKibg7V1WpHX6CIQaic824apriabJw4r6EWxziaSt5BATrlbx1GVzwW2qjUCqtYpDvIJLjKgP1ug/0",
231+
],
232+
```
233+
234+
以上字段在 scope 为 `snsapi_userinfo` 时尽可能配置齐全哦,当然,如果你的模式只是 `snsapi_base` 的话只需要 `openid` 就好了。
213235

214236
更多 SDK 的具体使用请参考:https://easywechat.org
215237

src/ServiceProvider.php

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Illuminate\Foundation\Application as LaravelApplication;
77
use Illuminate\Support\ServiceProvider as LaravelServiceProvider;
88
use Laravel\Lumen\Application as LumenApplication;
9+
use Overtrue\Socialite\User as SocialiteUser;
910

1011
class ServiceProvider extends LaravelServiceProvider
1112
{
@@ -35,13 +36,20 @@ protected function setupConfig()
3536
{
3637
$source = realpath(__DIR__.'/config.php');
3738

38-
if ($this->app instanceof LaravelApplication && $this->app->runningInConsole()) {
39-
$this->publishes([
40-
$source => config_path('wechat.php'),
41-
]);
39+
if ($this->app instanceof LaravelApplication) {
40+
41+
if ($this->app->runningInConsole()) {
42+
$this->publishes([
43+
$source => config_path('wechat.php'),
44+
]);
45+
}
46+
47+
// 创建模拟授权
48+
$this->setUpMockAuthUser();
4249
} elseif ($this->app instanceof LumenApplication) {
4350
$this->app->configure('wechat');
4451
}
52+
4553
$this->mergeConfigFrom($source, 'wechat');
4654
}
4755

@@ -72,4 +80,24 @@ public function provides()
7280
{
7381
return ['wechat', 'EasyWeChat\\Foundation\\Application'];
7482
}
83+
84+
/**
85+
* 创建模拟登录
86+
*/
87+
protected function setUpMockAuthUser()
88+
{
89+
$user = config('wechat.mock_user');
90+
91+
if (is_array($user) && !empty($user['openid']) && config('wechat.enable_mock')) {
92+
$user = new SocialiteUser([
93+
'id' => array_get($user, 'openid'),
94+
'name' => array_get($user, 'nickname'),
95+
'nickname' => array_get($user, 'nickname'),
96+
'avatar' => array_get($user, 'headimgurl'),
97+
'email' => null,
98+
]);
99+
100+
session(['wechat.oauth_user' => $user]);
101+
}
102+
}
75103
}

src/config.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,20 @@
5757
// // 'sub_merchant_id' => env('WECHAT_PAYMENT_SUB_MERCHANT_ID', ''),
5858
// // ...
5959
// ],
60+
61+
/**
62+
* 开发模式下的免授权模拟授权用户资料
63+
*
64+
* 当此选项为空的时候则会启用微信授权,用于开发时使用,开发完成请删除即可
65+
*/
66+
// 'enable_mock' => env('WECHAT_ENABLE_MOCK', true),
67+
// 'mock_user' => [
68+
// "openid" =>"odh7zsgI75iT8FRh0fGlSojc9PWM",
69+
// "nickname" => "overtrue",
70+
// "sex" =>"1",
71+
// "province" =>"北京",
72+
// "city" =>"北京",
73+
// "country" =>"中国",
74+
// "headimgurl" => "http://wx.qlogo.cn/mmopen/C2rEUskXQiblFYMUl9O0G05Q6pKibg7V1WpHX6CIQaic824apriabJw4r6EWxziaSt5BATrlbx1GVzwW2qjUCqtYpDvIJLjKgP1ug/0",
75+
// ],
6076
];

0 commit comments

Comments
 (0)