hoanghiep / google
laravel中的google
Requires
- google/apiclient: ^2.0
This package is not auto-updated.
Last update: 2024-09-14 19:04:13 UTC
README
准备
进入laravel应用,在composer.json文件中添加以下行
"minimum-stability": "dev",
以修复错误
在您的minimum-stability(稳定版)的任何版本上。检查包的拼写或您的minimum-stability
然后打开composer运行以下命令下载包
composer require hoanghiep/laravel-google-api
下载包后请注意准备
- 开启apache的rewrite_module
修复cURL错误60:SSL
下载https://curl.haxx.se/ca/cacert.pem
然后将其放入您的php目录中
然后修改php.ini文件
找到 ;curl.cainfo 行,修改为
curl.cainfo= "path/cacert.pem"
注意,某些版本可能无法修复,因为apache版本不同,例如使用wampp 5.5.12无法修复,但5.6.12可以。
1. 配置数据库。
在.env文件中配置数据库
2. 在config/app.php中添加provider
Hoanghiep\Googleapi\GoogleClientProvider::class
3. 运行以下命令导出必要的文件
php artisan vendor:publish
生成的文件包括
- 创建数据库存储文件的文件位于database\migrations\2016_07_03_010808_create_googles_table.php
- 配置文件中的认证流文件位于config/google.php
- 与模型一起工作的文件位于app\Google.php
- Google将使用的服务的模板文件位于app\Providers\GoogleServiceProvider.php
- 用于调用服务器和获取授权码以及使用库的模板控制器文件位于app\Http\Controllers\Hoanghiep\UserinfoController.php
4. 在config/google.php中配置到google服务器的路由
- AppName => 应用程序名称
- AppKey => 公共数据访问API密钥
- client_id => 授权服务器client id
- client_secret => 授权服务器选择密钥
- redirect => 替换为您的应用程序url https:///{projiect-name}/social/google/handle/token => 服务器必须具有此url以处理包。
- scopes=>需要用户同意以访问数据的范围
- redirectToPath => 成功处理后将重定向到的页面,例如重定向到/test页面,控制器处理为UserinfoController@index
5. 运行以下命令创建数据表
php artisan migrate
6. 运行流程
localhost/project-name/social/google/redirect
7. 如果出现错误提示找不到route url /test
NotFoundHttpException in RouteCollection.php line 161
请按以下方式修改声明
进入app/Http/routes.php
添加定义/test的url,调用UserinfoController@index
Route::get('/test',["middleware"=>"web","uses"=>"Hoanghiep\UserinfoController@index"]);
如果不在config/google redirectPath文件中使用/user/test定义,而使用home等,则如下所示
Route::get('/home',["middleware"=>"web","uses"=>"Hoanghiep\UserinfoController@index"]);
8. 查看结果并根据controller模板创建其他需要使用授权和访问google api数据的controller。
9 扩展继承GoogleController类
use \Hoanghiep\Googleapi\hoanghiep\GoogleController;
// 继承UserinfoController类 extends UserinfoController {
}
- 配置google客户端
$client = App::make("Google_Client");
- 处理Token "处理token"
$this->handleProvider($request);
- 获取Token "获取令牌和刷新次数"
$token = $this->client_array;
- 检查Token
if (!isset($token[0])): return redirect()->route("google.redirect"); endif;
-
获取刷新Token "获取刷新次数" $number_refresh = $token[0];
-
检查Token "如果还剩一个,则重新进行访问请求" if ($number_refresh == 1): return redirect()->route("google.redirect");
-
获取访问Token "获取访问令牌" $accessToken = $token[1];
-
设置访问Token "使用访问令牌" $client->setAccessToken($accessToken);
-
调用已声明的API并传入当前客户端 $google_oauth = App::make("Google_Service_Oauth2", [$client]); $user = $google_oauth->userinfo->get();
-
显示结果
dd($user);
使用其他Controller类和Provider服务,例如YouTube
-
开启YouTube服务API
-
在config/app.php中添加provider
App\Providers\GoogleServiceProvider::class,
-
添加需要使用的类服务,例如 // 在上面 class use Google_Service_Youtube; // 在Laravel服务容器中添加新的类到方法register()中添加一个新类
$this->app->bind("Google_Service_Youtube", function ($app, array $client) { return new Google_Service_Youtube($client[0]); });
}
- 在config/google.php中配置新的授权和访问数据权限范围,注意开启所需API
- 初始化路由
Route::get('social/google/youtube',["middleware" => "web","uses" => "Hoanghiep\YoutubeController@index"]);
- 运行创建controller的命令
php artisan make:controller Hoanghiep\YoutubeController
- 进入controller文件YoutubeController,使用继承自GoogleClientController的类,例如UserinfoController.php
看起来是这样的
handleProvider($request); $token = $this->client_array; if (!isset($token[0])): return redirect()->route("google.redirect"); endif; $number_refresh = $token[0]; if ($number_refresh == 1): return redirect()->route("google.redirect"); endif; $accessToken = $token[1]; $client->setAccessToken($accessToken); $youtube = App::make("Google_Service_Youtube",[$client]); dd($youtube); }