Надстройвам акаунти, за да използвам новия обхват plus.login
, така че тествах добавянето на потребител само с обхват userinfo
и след това влизане отново с добавен plus.login
. Резултатът беше, че беше въведен нов запис в панела за оторизиран достъп и маркерът за достъп, върнат от последното повикване, имаше само userinfo
разрешение. Тествах това, като направих потвърдено повикване с токен, както и се опитах да изброя хора.
Това очаквано поведение ли е и ако е така, трябва ли да отменя стария токен предварително? Виждам, че е възможно с действие /revoke
. Премахване от страна на сървъра на Oauth токен
Актуализация: Съответна същност. Това използва скъпоценния камък Omniauth на Ruby. Всъщност не съм сигурен как потребител някога може да види повече от 1 запис в панела за оторизиран достъп, но при това обстоятелство можех да видя 2. И след тестване на различни сценарии вчера, имах около 6 записа всички принадлежат към едно и също приложение! Обърнете внимание, че никога не съм променял клиентския идентификатор и всъщност имам само един клиентски идентификатор.
Надявам се, че ситуацията, която описах, може да бъде възпроизведена от други; това е просто въпрос на хакване на URL адреса от страна на Google, за да се премахне обхватът plus.login, и след това да влезете отново, като запазите URL адреса такъв, какъвто е.
Актуализация (2): Също така открих този проблем: „Не трябва да изисквате потребителска информация. профил или plus.me в комбинация с този обхват, тъй като те са имплицитно включени и биха създали объркващ диалогов прозорец за разрешения за вашия потребител." Всъщност това е нещо повече от проблем с UX разрешения; изглежда Google всъщност няма да съхранява обхвата "plus.me" срещу потребителя, така че това означава, че винаги ще показва диалоговия прозорец за разрешения за OAuth, дори ако потребителите вече са дали разрешения (мисля, защото прави проста проверка за равенство и отбелязва плюс .me се изисква, но не се съхранява срещу потребителя).
Актуализация (3): Грешката за използването на грешно влизане беше причинена от моя код, който прави нещо като user.login || user.signup без актуализиране на данните за токена при влизане. Така че сега актуализира токена за достъп и токена за опресняване след всяко влизане. (Все още не разбирам защо трябва да има повече от един токен за комбинация клиент-потребител.)