2017-01-23 1 views
0

Я интегрирую с Google Диском. Я следовал Google рекомендовал путь ввода кнопку входа, как это:Как установить область полномочий с помощью кнопки входа в систему Google

<div class="g-signin2" data-onsuccess="onSuccessFunc" data-theme="dark"></div> 

Этот класс г-signin2 включить некоторые функции обратного вызова, но я не могу найти документацию в любом месте. Поиски бессмысленны, так как здесь используется миллион примеров кода. Может ли кто-нибудь указать документацию?

Моя проблема заключается в том, что мне нужно включить доступ к приложению Google. Это делается в gapi.init, однако эта кнопка входа выполняет сам init, и если я попытаюсь это сделать, он жалуется, что init уже вызван. Хорошо, но мне нужно указать область проверки подлинности, чтобы включить привод Google.

Когда я запускаю программу, нажимайте на кнопку, чтобы разрешить доступ к профилю, но не диск.

Позже я вызываю gapi.auth.authorize, который просто терпит неудачу, не запрашивая пользователя. Я видел другие применения класса g-signin2 с другими атрибутами параметра, и я подозреваю, что для этого есть атрибут, но я затрудняюсь найти документацию. К сожалению, учебные пособия Google не ссылаются на документацию о полях и их значениях.

Любая идея, как сообщить кнопке входа в систему области полномочий для представления пользователю?

$scope.callAuthAuthorize = function() { 
    var authparam = { 
     'client_id': CLIENT_ID, 
     'scope': 'https://www.googleapis.com/auth/drive', 
     'immediate': true 
    }; 
    console.log("Now Requesting: ", authparam); 
    gapi.auth.authorize(authparam, $scope.handleAuthResult); 
} 
+0

бы [эта документация] (https://developers.google.com/identity/sign-in/web/incremental-auth) help –

ответ

0

Пробуйте JavaScript Quickstart tutorial для API Google Диска. Это то, что я использовал для создания приложения, которое читает файлы с Google Диска.

Чтобы включить учетные данные в своей учетной записи Google Cloud, выполните действия, описанные в разделе «Шаг 1: включите API-интерфейс накопителя».

Первый вызов authorize с immediate: true, а затем перейти к immediate: false об ошибке:

gapi.auth.authorize(authparam, (auth_result)=> { 
    if (auth_result && !auth_result.error) 
     $scope.handleAuthResult(auth_result) 
    else { 
     authparam.immediate = false; 
     gapi.auth.authorize(authparam, (auth_result)=> { 
      if (auth_result && !auth_result.error) 
       $scope.handleAuthResult(auth_result) 
      else 
       console.error(auth_result) 
     }) 
    } 
}) 
+0

Да, я сделал это. Проблема заключается в том, что клиентский API инициализируется автоматически, и на нем нет документации. У меня есть весь код в этом образце, закодированный таким же образом, но вызов 'gapi.auth.authorize' просто терпит неудачу. (и, кстати, сообщает очень хорошее сообщение об ошибке). Поэтому я точно знаю, что это не так. Но я не могу узнать, как настроить кнопку входа в систему для ASK для правильных разрешений. – AgilePro

+0

Вы должны передать '{scope: 'https://www.googleapis.com/auth/drive'}' в свой вызов 'gapi.auth.authorize' вместе с вашим' client_id'. Я называю это дважды, первый раз с 'instant: true', а затем при неудаче он пытается с помощью' немедленного: false'. – MattMS

+0

Я включил код для авторизации в верхнем сообщении. Второй вызов точно такой же, за исключением непосредственной переменной? – AgilePro

Смежные вопросы