Oauth2 работает так, что ему нужно знать, куда возвращать аутентификацию. Это делается путем определения URI перенаправления.
С браузерными приложениями легко узнать, куда должна быть возвращена аутентификация. В этом случае следует перейти на страницу веб-сайта, предназначенную для обработки ответа от сервера аутентификации.
С установленными приложениями это немного сложнее, потому что нет веб-сайта, на который можно вернуться, поэтому нет способа узнать точный IP-адрес, куда его отправить. В этом случае Google создает два стандартных URI перенаправления, которые вы можете использовать.
urn: ietf: wg: oauth: 2.0: oob и http://localhost
Объяснение вашей ошибки
В вашем случае, если вы читаете сообщение об ошибке, вы отправляете URI перенаправления Native на идентификатор клиента браузера.
Ваша проблема:
309181******-lnbictq23g17o7pp3e6v7vdqq9juinv9.apps.googleusercontent.com <--- Web client id
urn:ietf:wg:oauth:2.0:oob <--- Redirect uri only allowed for native clients
Решение
Вернитесь в консоль разработчика Google и найдите идентификатор клиента и секрет клиента для собственного (другого) клиента, которого вы создали. Вы не можете использовать urn:ietf:wg:oauth:2.0:oob
с идентификатором клиента браузера, как вы это сделали сейчас.
Теперь это действительно зависит от того, что вы здесь делаете. Если вы собираетесь опубликовать это на каком-либо веб-сайте, то оставление этого в качестве клиента браузера, вероятно, будет решающим идентификатором. в этом случае использование http://localhost для вашего URI перенаправления решит вашу проблему. Но вы должны добавить новый URI перенаправления, когда вы выпустите его на свой рабочий сайт. Оставлять localhost разрешенным в производственном клиенте, на мой взгляд, плохая идея.
но это действительно зависит от того, как вы собираетесь использовать это приложение.