微信小程序分别使用手机号和微信登录
参考:
使用手机登录
发送手机短信
安装easy-sms
1 | $ composer require "overtrue/easy-sms" |
config.easysms.php1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
return [
// HTTP 请求的超时时间(秒)
'timeout' => 5.0,
// 默认发送配置
'default' => [
// 网关调用策略,默认:顺序调用
'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
// 默认可用的发送网关
'gateways' => [
'qcloud',
],
],
// 可用的网关配置
'gateways' => [
'errorlog' => [
'file' => '/tmp/easy-sms.log',
],
'qcloud' => [
'sdk_app_id' => env('QCLOUD_APP_ID'), // SDK APP ID
'app_key' => env('QCLOUD_APP_KEY'), // APP KEY
'sign_name' => env('QCLOUD_APP_SIGN_NAME'), // 短信签名,如果使用默认签名,该字段可缺省(对应官方文档中的sign)
],
],
];
1 | $ php artisan make:provider EasySmsServiceProvider |
创建一个 ServiceProvider
app/providers/EasySmsServiceProvider.php1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Overtrue\EasySms\EasySms;
class EasySmsServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
$this->app->singleton(EasySms::class, function ($app) {
return new EasySms(config('easysms'));
});
$this->app->alias(EasySms::class, 'easysms');
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
//
}
}
修改EasySmsServiceProvider.php
获取SDK AppID,App Key
腾讯云短信获取SDK AppID,App Key
注意:不同的应用有不同的AppID,App Key,要对应。调试时没有对应,导致发送失败。
.env1
2
3QCLOUD_APP_ID=
QCLOUD_APP_KEY=
QCLOUD_APP_SIGN_NAME=scottyun
发送短信
1 | php artisan tinker |
进入tinker1
2
3
4>> $sms = app('easysms');
>> $sms->send(13212345678, [
'content' => '【Lbbs社区】您的验证码是1234。如非本人操作,请忽略本短信',
]);
国内短信由签名+正文组成,【Lbbs社区】是短信签名;”您的验证码是{1}。如非本人操作,请忽略本短信”短信正文
修改数据结构
1 | php artisan make:migration add_phone_to_users_table --table=users |
database/migrations/{your_date}_add_phone_to_users_table.php
1 |
|
1 | # 修改数据表的字段属性 |
短信验证码接口
1.输入手机号,手机短信验证码发送
2.填入短信验证码,验证是否成功
3.成功完成注册,创建用户
新建基类
1 | $ php artisan make:controller Api/Controller |
app/Http/Controllers/Api/Controller.php
1 |
|
routes/api.php
1 |
|
创建验证类
1 | $ php artisan make:request Api/VerificationCodeRequest |
app/Http/Requests/Api/FormRequest.php
1 |
|
app/Http/Requests/Api/VerificationCodeRequest.php
1 |
|
创建控制器
1 | $ php artisan make:controller Api/VerificationCodesController |
app/Http/Controllers/Api/VerificationCodesController.php
1 |
|
- 生成四位随机码,用easysms发送
- 验证码放入缓存有效期10 mins
- 返回 key和过期时间,缓存中存储了phone ,code;和用户输入的验证码比对
用户注册接口
routes/api.php
1 |
|
创建控制器和验证类
1 | $ php artisan make:controller Api/UsersController |
app/Http/Requests/Api/UserRequest.php
1 |
|
用户注册提交的数据,name,password,verification_code。verification_key由$api->post(‘verificationCodes’, ‘VerificationCodesController@store’)产生。
app/Http/Controllers/Api/UsersController.php
1 |
|
判断验证码是否失效,再判断验证码是否正确。最后完成用户注册,清空缓存。
图片验证码
短信验证码发送之前要输入验证码。
安装gregwar/captcha
1 | $ composer require gregwar/captcha |
routes/api.php
1 | // 图片验证码 |
创建控制器和验证类
1 | $ php artisan make:controller Api/CaptchasController |
app/Http/Requests/Api/CaptchaRequest.php
1 |
|
app/Http/Controllers/Api/CaptchasController.php
1 |
|
生成验证码,和phone 一起存入缓存中。返回key,过期时间,给用户看到的验证码图片。
注册码生成
修改短信验证码接口
app/Http/Requests/Api/VerificationCodeRequest.php
1 |
|
通过图片验证码验证是否发送短信给用户。
app/Http/Controllers/Api/VerificationCodesController.php
1 |
|