0

Я создал проект с использованием python в Google App Engine. Я хочу использовать google вход на моем сайте.Google Войти для python Google App Engine

Я пытался использовать Google знак для веб, и она работает хорошо, но я не знаю, как делать вызовы API от сервера, чтобы гарантировать, что пользователь подписан в.

Я пытался использовать пользователь == > пользователь = users.get_current_user() Затем используйте идентификатор пользователя, чтобы сделать API вызовы ==> "https://www.googleapis.com/plus/v1/people/ "+ self.request.get ('ID') +"? = поля изображения & ключ = SOME_KEY"

Проблема в том, что идентификатор не тот, который я должен использовать. когда я сравниваю этот id и тот, который я получаю в javascrip, они не одинаковы. Кроме того, в веб-API они упомянули, что я должен отправить этот идентификатор на сервер напрямую (я не знаю причины). Поэтому я хочу знать, как получить правильный идентификатор в моем приложении python.

// Не отправляйте это прямо на свой сервер!

<html lang="en"> 
    <head> 
    <meta name="google-signin-scope" content="profile email"> 
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com"> 
    <script src="https://apis.google.com/js/platform.js" async defer></script> 
    </head> 
    <body> 
    <div class="g-signin2" data-onsuccess="onSignIn" data-theme="dark"></div> 
    <script> 
     function onSignIn(googleUser) { 
     // Useful data for your client-side scripts: 
     var profile = googleUser.getBasicProfile(); 
     console.log("ID: " + profile.getId()); // Don't send this directly to your server! 
     console.log('Full Name: ' + profile.getName()); 
     console.log('Given Name: ' + profile.getGivenName()); 
     console.log('Family Name: ' + profile.getFamilyName()); 
     console.log("Image URL: " + profile.getImageUrl()); 
     console.log("Email: " + profile.getEmail()); 

     // The ID token you need to pass to your backend: 
     var id_token = googleUser.getAuthResponse().id_token; 
     console.log("ID Token: " + id_token); 
     }; 
    </script> 
    </body> 
</html> 
+1

Удостоверяются ли документы на бэкэнд? https://developers.google.com/identity/sign-in/web/backend-auth ... есть пример для декодирования маркера ID с библиотекой Python. Идентификатор Plaintext небезопасен и может быть подделан, поэтому вы не можете использовать его для backend auth, вам нужно отправить и проверить токен ID и извлечь из него значения. –

ответ

2

Вы не можете использовать идентификатор пользователя, чтобы сделать API calls.When вы делаете API вызовы на серверы Google в зависимости от API вы должны пройти другую parameters.For пример, если вы хотите перечислить ярлыки, доступные в вашем gmail, вы собираетесь использовать API Gmail и должны передать labelid, userid в запросе get. Вот документация для приведенного выше примера. https://developers.google.com/gmail/api/v1/reference/users/labels/get Вы можете поиграть с этим API, используя эту кнопку API, предоставленную Google. Как и в этом примере, все продукты google имеют разные API-интерфейсы для разных функций, и вам необходимо передать разные параметры в соответствии с документацией, которую они предоставили.

+0

Мне пришлось передать токен аутентификации на бэкэнд, чтобы использовать API, который мне нужен. – Arman