I have implemented the OAuth 2 authentication using Xamarin.Auth.
Authenticator = new OAuth2Authenticator( clientId: OAuthConstants.CLIENT_ID, clientSecret: null, scope: OAuthConstants.SCOPE, authorizeUrl: new Uri(OAuthConstants.AUTHORIZE_URL), accessTokenUrl: new Uri(OAuthConstants.ACCESS_TOKEN_URL), redirectUrl: new Uri(OAuthConstants.REDIRECT_URL), getUsernameAsync: null, isUsingNativeUI: true);
A user can signup using OAuth or use a local account and link that to a Google OAuth Account. Both these scenarios work fine.
When linking account or signing up the user is prompted to grant the scope permissions (profile email). I then get back the access token and use the Account Store to store the account.
Since this is now linked to google I store the google user if and a refresh token in the DB. The idea being is the app is uninstalled and the user then re-installs it I want them to be able to login again with oAuth.
This works - since I can find the user using the Google User Id but even thought the app ID has not changed when using the OAuth2Authenticator to request a access token I keeps asking the user to grant the permissions - even though they were already granted for the app.
Is there a different way to prompt them to login rather than just being asked for the permissions every time?
I am showing the presenter like follows:
var presenter = new Xamarin.Auth.Presenters.OAuthLoginPresenter(); CustomTabsConfiguration.CustomTabsClosingMessage = null; presenter.Login(Authenticator);
Thanks,
Answers
Have a look at: https://stackoverflow.com/questions/48338147/google-auth2-asks-for-permission-every-time-when-asking-for-access-to-the-app
Hope this could help you.