php - Google शीट एपीआई v4 पत्रक बनाएं और उपयोगकर्ताओं को आमंत्रित करें




google-api google-spreadsheet (2)

एक सेवा खाता एक डमी उपयोगकर्ता है इसके पास अपना स्वयं का ड्राइव खाता है, जिसकी फ़ाइल उसके खाते पर बनाई गई है। सर्विस अकाउंट को आपकी व्यक्तिगत गूगल ड्राइव अकाउंट एक्सेस करने की आवश्यकता होगी। (किसी अन्य उपयोगकर्ता की तरह इसे आपके साथ साझा करें)

अनुमतियाँ: सम्मिलित करें एक फ़ाइल के लिए अनुमति सम्मिलित करता है

नोट: आप वर्तमान में Google शीट एपीआई का उपयोग करने के लिए प्रमाणित हैं, जिसे आप Google डेवलपर कंसोल पर अपने कोड और अपनी परियोजना में Google ड्राइव एपीआई (स्कोप) जोड़ना चाहते हैं। Google शीट एपीआई के माध्यम से किसी फ़ाइल पर अनुमतियों को बदलने का कोई तरीका नहीं है।

हां, आप अपनी टीम के प्रत्येक सदस्य के लिए अनुमतियां जोड़ना चाहते हैं, जिसे आप इस फ़ाइल को देखने / संपादित करने की अनुमति देना चाहते हैं।

युक्ति: जब आप Google ड्राइव एपीआई जोड़ते हैं, तो कोशिश करते हैं और एक फाइल करते हैं। सूची को देखने के लिए यूआरएल , वैकल्पिक लिंक और एम्बेड लिंक परिणाम में। कभी-कभी इन्हें भर दिया जाता है और केवल किसी अन्य उपयोगकर्ता को देखने के लिए साझा करने के लिए इसका उपयोग किया जा सकता है।

मैं Google शीट एपीआई का उपयोग कर Google शीट बनाने के लिए एक सेवा खाता प्रमाणीकरण का उपयोग कर रहा हूं। मैं एक स्प्रैडशीट बनाना चाहता हूं और मेरी टीम को इसे खोलने की अनुमति देना है।

    $private_key  = file_get_contents($rootDir . '/config/googleApiCredentials.p12');
    $client_email = '[email protected]';
    $scopes       = implode(' ', ["https://www.googleapis.com/auth/drive"]);

    $credentials = new \Google_Auth_AssertionCredentials(
        $client_email,
        $scopes,
        $private_key
    );
    // tried once with additional constructor params:
    // $privateKeyPassword = 'notasecret',
    // $assertionType = 'http://oauth.net/grant_type/jwt/1.0/bearer',
    // $sub = '[email protected]

    $this->googleClient = new \Google_Client();
    $this->googleClient->setAssertionCredentials($credentials);
    if ($this->googleClient->getAuth()->isAccessTokenExpired()) {
        $this->googleClient->getAuth()->refreshTokenWithAssertion();
    }
    $service = new \Google_Service_Sheets($this->googleClient);
    $newSheet = new \Google_Service_Sheets_Spreadsheet();
    $newSheet->setSpreadsheetId('34534534'); // <- hardcoded for test
    $response = $service->spreadsheets->create($newSheet);
    print_r($response);

शीट, बीइंग हो रही है, मुझे इसके साथ प्रतिक्रिया मिलती है

[spreadsheetId] => 1opxZmOf5dEPSLoKD1miMgwJRn643cXip6yCquPYxxx

हालांकि, मैं Google के खाते का उपयोग करके इस फ़ाइल को ब्राउज़र के माध्यम से नहीं खोल सकता, भले ही Im की प्रोजेक्ट की अनुमतियों में Google के डेवलपर कंसोल में स्वामी, संपादक, लेखक और रीडर के रूप में जोड़ा गया हो। ब्राउज़र का कहना है कि मैं अनाथ नहीं हूं और मैं अनुमति के लिए व्यवस्थापक से संपर्क कर सकता हूं

कोई सुझाव? क्या किसी को भी दस्तावेज बनाने और किसी भी "मानव" के लिए इसका उपयोग करने के लिए कैसे प्रबंधित किया गया है?


डोमेन खातों के लिए अनुमतियां देना संभव है:

private function createNewSheet($title)
{
    $properties = new \Google_Service_Sheets_SpreadsheetProperties();
    $properties->setTitle($title);

    $newSheet = new \Google_Service_Sheets_Spreadsheet();
    $newSheet->setProperties($properties);

    $response = $this->sheetService->spreadsheets->create($newSheet);
    $fileId = $response['spreadsheetId'];

    $domainPermission = new \Google_Service_Drive_Permission([
        'type'  => 'domain',
        'role'  => 'writer',
        'value' => 'myCompany.com' //eg [email protected]
    ]);

    $this->driveService->permissions->insert($fileId, $domainPermission);
    return $response;
}




service-accounts