В сумме вы указываете oauth_callback слишком поздно в процессе. Вместо этого предоставьте это в самом начале. Для провайдера Google вы звоните OAuthGetRequestToken.
Эта документация Google , кажется, делает это правильно. Странный. Я также обнаружил другую документацию , которая объясняет то же самое: «[Поставщик услуг] ДОЛЖЕН связывать URL-адрес обратного вызова, отправленный на шаге 1, с маркером запроса, который он выдает». Таким образом, вы должны предоставить URL обратного вызова при получении «неавторизованного» токена запроса («неавторизованного», потому что пользователь еще не дал свое разрешение). После того, как вы это сделаете, вы можете перенаправить пользователя на URL авторизации, где пользователь (он же владелец ресурса) явно предоставляет доступ для вашего приложения.
Вот страница , которая предоставляет соответствующую информацию об OAuth 2.0.