Google Spreadsheet API - доступ к электронной таблице, созданной с помощью учетной записи службы - PullRequest
0 голосов
/ 09 ноября 2018

Я создал поставщика услуг в своем приложении laravel, которое подключается к API электронных таблиц Google, и я могу создавать новые таблицы, редактировать существующие (с правильными правами доступа для обмена) и т. Д.

Проблема в том, что я предоставил ключ учетных данных json своей учетной записи службы, поэтому создаваемые электронные таблицы принадлежат этому загадочному почтовому адресу, поэтому после создания - я получаю идентификатор и при попытке доступа к электронной таблице он дает мне эту страницу «запроса доступа», и когда я пытаюсь запросить доступ к своей собственной электронной почте (я также определил себя как «владельца» проекта), я получаю эти уведомления о состоянии доставки по почте -

Ваше сообщение не было доставлено 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);
   }
}

И, как я уже сказал, я получаю ответ со строкой, которая выглядит как фактический идентификатор электронной таблицы, но по какой-то причине не могу получить к ней доступ с помощью своего собственного электронного адреса.

...