2016-08-06 23 views
0

Ich möchte mit Google Drive meine Anwendungsdateien ohne Benutzerauthentifizierung speichern. Ich habe bereits Use Google Drive API with Laravel gesehen, aber die Antworten stimmen nicht mit meinen Bedürfnissen überein.Hochladen von Dateien nach GOOGLE DRIVE ohne Benutzerauthentifizierung nur, wenn das Formular in LARAVEL ODER AJAX gesendet wurde

Ich habe auch versucht, eine Ajax Post-Anfrage, wenn Formular eingereicht.

Ich möchte wissen, wie bekomme ich diese Anfrage, die ich in Google Drive-Dokumentation gefunden habe: https://developers.google.com/drive/v3/web/manage-uploads. ?

  1. POST/upload/Antrieb/v3/Dateien uploadType = Medien HTTP/1.1
  2. Host: www.googleapis.com
  3. Content-Type: image/jpeg
  4. Content-Length: number_of_bytes_in_file
  5. Berechtigung: Bearer your_auth_token

JPEG-Daten

+0

ich glaube nicht, dass sie es ohne auth zulassen werden, sonst könnte jeder auf anyones account hochladen, wenn sie wollen, die auth ist da um zugang zu ermöglichen ?? Daher der "Bearer your_auth_token", also musst du die Auth während des Ajax-Aufrufs etc. vor dem Hochladen machen. –

+0

ja ich stimme zu, ich bin immer noch Neuling von Ajax Anfrage, können Sie mir bitte helfen? –

+0

alles, was ich empfehlen kann, ist die Suche nach Laravel/php und Goole Drive API, wie Sie geheime Schlüssel usw. einrichten müssen und etwas wie guzzle zum Verbinden verwenden ... –

Antwort

0

Wie bereits im Kommentar erwähnt und aus Daimto's answer erfordert Google Drive (und andere SaaS-Tools) eine Authentifizierung zu Sicherheitszwecken.

Versuchen Sie die PHP Quickstart in Drive API v3. Die Grundstruktur ist schon da.

Für ein aktuelles Beispiel mit Hilfe der API eine Datei zu, könnte dies SO thread helfen:

require_once 'Google/Client.php'; 
require_once 'Google/Service/Drive.php'; 

$client = new Google_Client(); 
// Get your credentials from the console 
$client->setClientId('<YOUR_CLIENT_ID>'); 
$client->setClientSecret('<YOUR_CLIENT_SECRET>'); 
$client->setRedirectUri('<YOUR_REGISTERED_REDIRECT_URI>'); 
$client->setScopes(array('https://www.googleapis.com/auth/drive.file')); 

session_start(); 

if (isset($_GET['code']) || (isset($_SESSION['access_token']) && $_SESSION['access_token'])) { 
if (isset($_GET['code'])) { 
$client->authenticate($_GET['code']); 
$_SESSION['access_token'] = $client->getAccessToken(); 
} else 
$client->setAccessToken($_SESSION['access_token']); 

$service = new Google_Service_Drive($client); 

//Insert a file 
$file = new Google_Service_Drive_DriveFile(); 
$file->setTitle(uniqid().'.jpg'); 
$file->setDescription('A test document'); 
$file->setMimeType('image/jpeg'); 

$data = file_get_contents('a.jpg'); 

$createdFile = $service->files->insert($file, array(
'data' => $data, 
'mimeType' => 'image/jpeg', 
'uploadType' => 'multipart' 
)); 

print_r($createdFile); 

} else { 
$authUrl = $client->createAuthUrl(); 
header('Location: ' . $authUrl); 
exit(); 
} 

ein google/google-api-php-client in Github auch da ist. Der Leitfaden könnte Ihnen auch Einblick geben.

0

Intern müssen alle Dateien und Ordner in Google Drive einen authentifizierten Benutzer als Eigentümer haben. Auf jeden Fall sollte es möglich sein, Ihre Lösung mit einem "Proxy" zu umgehen, der die Datei mit Ihrem eigenen Konto oder einem Google-Dienstkonto hochlädt.

Sie werden Ihrem Endbenutzer eine Webseite präsentieren, auf der anonymer Zugriff erlaubt ist. Nach dem Hochladen der Daten rufen Sie die API im Hintergrund mit Ihrem eigenen Konto oder einem Google-Dienstkonto auf.