hoanghiep/google

dev-master 2016-07-07 04:44 UTC

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

  1. 开启YouTube服务API

  2. 在config/app.php中添加provider

    App\Providers\GoogleServiceProvider::class,

  3. 添加需要使用的类服务,例如 // 在上面 class use Google_Service_Youtube; // 在Laravel服务容器中添加新的类到方法register()中添加一个新类

    $this->app->bind("Google_Service_Youtube", function ($app, array $client) { return new Google_Service_Youtube($client[0]); });

}

  1. 在config/google.php中配置新的授权和访问数据权限范围,注意开启所需API
  2. 初始化路由

Route::get('social/google/youtube',["middleware" => "web","uses" => "Hoanghiep\YoutubeController@index"]);

  1. 运行创建controller的命令

php artisan make:controller Hoanghiep\YoutubeController

  1. 进入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); }