2013-12-03 3 views
1

Я создал приложение Glass в Python. Я начал с зеркального быстрого запуска для Python, и мое приложение работает отлично, за исключением того, что некоторые пользователи получают несколько уведомлений. У меня есть только одна строка для каждого пользователя в моей таблице Credentials, однако, когда я перехожу и смотрю на свой авторизованный доступ в своей учетной записи, я вижу, что мой проект Glass был указан 8 раз.GAE Стеклянное зеркало, создающее несколько значков oauth для пользователя

Может ли кто-нибудь сказать мне, как проверить и посмотреть, предоставил ли пользователь ранее доступ к моему приложению, когда они входят в систему, и если да, то пропустите создание нового токена.

ответ

1

Идентификатор пользователя можно использовать для предотвращения хранения нескольких учетных данных для каждого пользователя.

Когда вы завершите поток OAuth, вы получите токен ID вместе с токенами доступа и обновления. Если расшифровать этот маркер, вы увидите что-то вроде этого:.

{ 
    "iss":"accounts.google.com", 
    "at_hash":"HK6E_P6Dh8Y93mRNtsDB1Q", 
    "email_verified":"true", 
    "sub":"10769150350006150715113082367", 
    "azp":"1234987819200.apps.googleusercontent.com",   
    "email":"[email protected]", 
    "aud":"1234987819200.apps.googleusercontent.com", 
    "iat":1353601026, 
    "exp":1353604926 
} 

sub ключа является один вы заинтересованы в этом значении используется для однозначной идентификации пользователя. Если вы видите, что пользователь аутентифицируется с уже установленным идентификатором пользователя, замените старое значение.

Если вы обновите свой вопрос, включив код, который вы используете для потока OAuth, мы можем предоставить более конкретные рекомендации. Или вы можете узнать больше об этом от Google's OAuth documentation.

+0

Я понял свою проблему. Я использовал пакет для отправки своих уведомлений моей группе пользователей, однако я объявлял batch_responses = _BatchCallback() batch = BatchHttpRequest (callback = batch_responses.callback) вне моей петли идентификатора пользователя. Затем был вызван пакет batch.add (xxx), который по существу укладывал все добавления в одно и то же объявление пакета. Поэтому каждый инкрементный пользователь получал дополнительное уведомление. Я решил, объявив batch = '' после выполнения моей партии. – marty331