There are many StackOverflow posts about this issue, but none that offer a workaround for web apps to log into services via Google Web Auth in an embedded browser like Facebook/Facebook Messenger on iOS; but I discovered that Pinterest's web log in with Google button seems to be working, so I was wondering if someone has an idea how they got it to work.
Google disallowed logging into Google from webviews a few years ago, and Auth0 also made a blog post about workarounds, but it all seems to focus on native apps, not web apps that offer Google as a login option.
But my company's app is a web-app, and we'd like it if when someone shares a link to our site on Facebook Messenger/Facebook posts, users can log in with Google even if they don't pop out the native Safari browser. Based on the above documentation it would seem that that's not possible - but actually I discovered that Pinterest's "Sign in with Google" button does work! So it appears there's a way to get Google login working (not sure if they swung a special deal with Google, or if they're doing something we/Auth0 can be doing too, though).
Repro steps:
- Open Facebook Messenger in iOS (this should roughly work with Facebook too, but this demonstrates the issue)
- Send yourself a message with the URL
https://community.auth0.com
- Click on the link to the Auth0 Community forum
- Click on Log In
- Click on Log in with Google
- See that you get a 403: disallowed_useragent error.
And to prove that there does seem a way for this to be done in the wild:
- Ensure your phone doesn't have Pinterest installed (or else your phone will open it in the native app).
- Open Facebook Messenger in iOS
- Send yourself a message with the URL
https://pinterest.com
- Click on the Pinterest link
- Click on "Sign in with google"
- Somehow, it doesn't error when Pinterest does it!
Anyone have an idea what's going on here?
This issue has been cross-posted to Auth0's support community forum, since my team implements Google Auth through Auth0, but it seems generally relevant beyond Auth0.
EDIT: some more details from looking at the Google OAuth endpoint URLs my site vs Pinterest's:
Looking at the Google oauth URL my site uses vs Pinterest's, I see a few differences:
- Mine goes to
https://accounts.google.com/o/oauth2/auth
, theirs goes tohttps://accounts.google.com/o/oauth2/auth/identifier
- Theirs has a few extra query parameters mine doesn't:
["openid.realm", ""]
["ss_domain", "https://www.pinterest.com"]
["fetch_basic_profile", "true"]
["gsiwebsdk", "2"]
["flowName", "GeneralOAuthFlow"]
- Theirs has a different value for
response_type
ofpermission id_token
, mine iscode
not sure what would have an effect though.
EDIT: Same issue in this StackOverflow post from several months ago but no activity, and this one from 4 years ago but they claim there's no way - which seems to not be true since Pinterest is able to pull it off! Meanwhile both Spotify and StackOverflow also fail with this error. Maybe it's an inside deal...