我在laravel应用中创建了与google电子表格API连接的服务提供商,并且能够创建新的电子表格,编辑现有的电子表格(当然具有正确的共享权限)等等。
问题是我提供了我的服务帐户的json凭据密钥,因此正在创建的电子表格由该秘密邮件地址拥有,因此在创建后-当我尝试访问电子表格时会获得一个ID它为我提供了“请求访问权”页面,当我尝试请求访问自己的电子邮件(我也将自己定义为项目的“所有者”)时,我会通过邮件获得这些交付状态通知->
您的消息未发送给 xxxxxx@yyyyyy-1x3x71x4x27x4.iam.gserviceaccount.com,因为该域 找不到admanager-1x3x71x4x27x4.iam.gserviceaccount.com。 检查拼写错误或不必要的空格,然后重试。
很显然,它正在尝试将我(xxxx@gmail.com
)的电子邮件发送到我的服务帐户电子邮件,以请求访问此特定电子表格,当然,该地址实际上并不存在。我觉得我一开始就做错了。.
GoogleServiceProvider.php-
class GoogleServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
$this->app->singleton('google_spreadsheet_client', function ($app) {
// we will instantiate the Google Spread Sheet Client once in this function
$client = new Google_Client();
$client->setApplicationName('xxxxx');
$client->setScopes(Google_Service_Sheets::SPREADSHEETS);
$client->setAuthConfig('xxxxxx-1xyxyxyxyxyxy-221ca2fc3123.json');
$google_service_sheets = new Google_Service_Sheets($client);
return $google_service_sheets;
});
}
SpreadsheetController.php
class SpreadsheetsController extends Controller {
public function create() {
$service = resolve('google_spreadsheet_client');
$spreadsheet = new \Google_Service_Sheets_Spreadsheet([
'properties' => [
'title' => 'test'
]
]);
$spreadsheet = $service->spreadsheets->create($spreadsheet, [
'fields' => 'spreadsheetId'
]);
printf("Spreadsheet ID: %s\n", $spreadsheet->spreadsheetId);
}
}
就像我说的那样-我确实收到了一个看起来像实际电子表格ID的字符串的响应,但是由于某种原因无法使用我自己的电子邮件进行访问。