2016-04-06 4 views
0

Я разрабатываю Java-программу App Engine, использующую OAuth2 при входе в систему. Другими словами, пользователь должен дать разрешение перед использованием приложения. Теперь я хочу интегрировать функции Google Picker без необходимости проверки подлинности (запроса разрешения снова) на клиенте.как авторизовать google picker с маркером oauth2 из движка приложения

Что я сделал, это передать объект (loginInfo - объект json) с токеном как свойством.

Хотя маркер работает отлично на стороне сервера, на клиенте я получаю ошибку UnAuthorized 401. EDIT Следует отметить, что область действия на стороне сервера включает в себя все необходимые разрешения для представлений на сборщике и что включен мой Picker Api, а также API Drive.

Мой вопрос сейчас, что было бы лучшим способом справиться с этой ситуацией? Даже безопасно ли вы отправлять authToken на клиенте? Как я могу достичь этого сценария, чтобы пользователь не одобрял дважды и все еще использует Picker? Есть ли лучшие решения, чем Picker для загрузки на диск, Picassa или другие сервисы Google?

ответ

0

Прежде всего позвольте мне извиниться, поскольку я забыл упомянуть, что я использовал GWT для программирования приложения. Это говорит. Похоже, что ошибка пришла с использованием библиотеки GWT-Ajaxloader; по-видимому, он должен призывать к api устаревшим образом. Таким образом, решение для меня было жестким кодом запроса в HTML , так как при

<!-- The Following proves that picker works with oAuth2 --> 
    <script type="text/javascript"> 
     // Use the API Loader script to load google.picker and gapi.auth. 
     function onApiLoad() { 
     gapi.load('picker'); 
     } 
    </script> 
    <script type="text/javascript" src="https://apis.google.com/js/api.js?onload=onApiLoad"></script> 

Как только это было сделано, я был в состоянии использовать объект сборщика уже загружен и поместить в setDeveloperKey() метод. Теперь все подлице. Еще одно предупреждение ... Убедитесь, что AccessKey не истек на сервере. На Java Api это может быть сделано путем проверки, когда он истекает Credential.getExpiresInSeconds() Я лично дал мне час

if(cred.getExpiresInSeconds() <= 3600){ 
    cred.refreshToken();} 

И это исправление, которое работает для меня.

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

  • Нет связанных вопросов^_^