Форум программистов, компьютерный форум, киберфорум
PHP: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 2
Регистрация: 13.01.2013
Сообщений: 71
Google API

PHP Google drive

02.06.2014, 21:59. Показов 3455. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
была задача прикуртить на сайт работу с гугли api drive, что бы можно было шарить нужные папки, сделал, но возникла проблема, что расшарить мог только владелец папок. После чтения доков вроде как понял что если делать авторизацию не через Create web application (client ID,secret key,redirectURI) а создать Google services account, получить ключ. то сможет шарить тогда папки любой пользователь. В экземплах Php google drive нашел пример авторизаии через гугл сервис акаунт(данные вставлял - всё работает)
PHP Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
session_start();
include_once "templates/base.php";
 
/************************************************
  Make an API request authenticated with a service
  account.
 ************************************************/
set_include_path("../src/" . PATH_SEPARATOR . get_include_path());
require_once 'Google/Client.php';
require_once 'Google/Service/Books.php';
 
/************************************************
  ATTENTION: Fill in these values! You can get
  them by creating a new Service Account in the
  API console. Be sure to store the key file
  somewhere you can get to it - though in real
  operations you'd want to make sure it wasn't
  accessible from the webserver!
  The name is the email address value provided
  as part of the service account (not your
  address!)
  Make sure the Books API is enabled on this
  account as well, or the call will fail.
 ************************************************/
$client_id = '<YOUR_CLIENT_ID>';
$service_account_name = '';
$key_file_location = '';
 
echo pageHeader("Service Account Access");
if ($client_id == '<YOUR_CLIENT_ID>'
    || !strlen($service_account_name)
    || !strlen($key_file_location)) {
  echo missingServiceAccountDetailsWarning();
}
 
$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");
$service = new Google_Service_Books($client);
 
/************************************************
  If we have an access token, we can carry on.
  Otherwise, we'll get one with the help of an
  assertion credential. In other examples the list
  of scopes was managed by the Client, but here
  we have to list them manually. We also supply
  the service account
 ************************************************/
if (isset($_SESSION['service_token'])) {
  $client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
    $service_account_name,
    array('https://www.googleapis.com/auth/books'),
    $key
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
  $client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();
 
/************************************************
  We're just going to make the same call as in the
  simple query as an example.
 ************************************************/
$optParams = array('filter' => 'free-ebooks');
$results = $service->volumes->listVolumes('Henry David Thoreau', $optParams);
echo "<h3>Results Of Call:</h3>";
foreach ($results as $item) {
  echo $item['volumeInfo']['title'], "<br /> \n";
}
перписал его потом расширвания прав с минимальными изменениями
PHP Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
session_start();
include_once "templates/base.php";
 
/************************************************
Make an API request authenticated with a service
account.
 ************************************************/
set_include_path("../src/" . PATH_SEPARATOR . get_include_path());
require_once 'Google/Client.php';
require_once 'Google/Service/Drive.php';
 
$client_id = '1077677978854-deaidfbbb36erpstbjsvqh6s1iftg36k.apps.googleusercontent.com';
$service_account_name = '1077677978854-deaidfbbb36erpstbjsvqh6s1iftg36k@developer.gserviceaccount.com';
$key_file_location = './8c320ff616a77aec2421642de64449dad6f4a9ca-privatekey.p12';
 
$client = new Google_Client();
 
if (isset($_SESSION['service_token'])) {
    $client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
    $service_account_name,
    array('https://www.googleapis.com/auth/drive'),
    $key
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
    $client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();
$service = new Google_Service_Drive($client);
$newPermission= new Google_Service_Drive_Permission();
$newPermission->setType('user');
$newPermission->setRole('reader');
$newPermission->setValue('rizr19911006@gmail.com');
try {
    return $service->permissions->insert('1PXwPONvgN6yB2p6HbC98XiJsxBwPZ2WIM3QmeXjWLlo', $newPermission);
} catch (Exception $e) {
    print "An error occurred: " . $e->getMessage();
}
авторизация вроде как проходит но ошибка An error occurred: Error calling POST https://www.googleapis.com/dri... rmissions: (500) Internal Error

что может быть? или гугл сэрвис акаунт не позволяет такое делать в отличии от обычной авторизации?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.06.2014, 21:59
Ответы с готовыми решениями:

Поиск в расшаренной папке облачного хранилища (Яндекс.Диск, Google Drive и подобные) через сайт
Доброго дня! Есть сайт на WP. Есть большой объем данных (50-100 ГБ, фотографии). Необходимо каждый день загружать порядка 1000...

Google api and curl php
Приветствую, дамы и господа! Есть проблема. Никогда не работал с Google API, а сегодня понадобилось поковыряться в Google Adwords API. Так...

Google Drive
у меня винда 8 и одна из папок Google Drive и все подпапки в ней стали выглядеть так: ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.06.2014, 21:59
Помогаю со студенческими работами здесь

Google Drive
Пытаюсь запустить пример https://github.com/googledrive/android-demos/ Сказано, что для того чтобы запустить код нужно изменить...

Работа с Google Drive
Пожалуйста, просветите меня, почему когда я кидаю ссылку на файл загруженный в моем аккаунте google drive, то файле по ссылке не...

Работа с Google Drive
Мне нужно организовать работу с Google диском. Я пробовал и через различные модули(gdata, pydrive) но все попытки безуспешны. Кто-то может...

Rest google Drive
Добрый день! Пытаюсь разобраться с REST библиотекой Delphi XE7 для работы с Google Drive. Использую OAuth2Authenticator1, RESTClient1,...

Google Drive APIs
Здравствуйте, форумчане. Возник следующий вопрос. Хочу сделать программу для работы с google диском на C#, нашел вот эту страницу, ну как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
Реляционная модель и правила Кодда: фундамент современных баз данных
Codd 05.04.2025
Конец 1960-х — начало 1970-х годов был периодом глубоких трансформаций в области хранения и обработки данных. На фоне растущих потребностей бизнеса и правительственных структур существовавшие на тот. . .
Асинхронные операции в Django с Celery
py-thonny 05.04.2025
Разработчики Django часто сталкиваются с проблемой, когда пользователь нажимает кнопку отправки формы и. . . ждёт. Секунды растягиваются в минуты, терпение иссякает, а интерфейс приложения замирает. . . .
Использование кэшей CPU: Максимальная производительность в Go
golander 05.04.2025
Разработчикам хорошо известно, что эффективность кода зависит не только от алгоритмов и структур данных, но и от того, насколько удачно программа взаимодействует с железом. Среди множества факторов,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер