Skip to content

When implementing Google Sign-In on iOS, is it possible to indicate in the google account sign-in popup that only email address will be used? #458

Open

Description

@jin-jobs

Describe the bug
When implementing Google Sign-In on iOS, is it possible to indicate in the google account sign-in popup that only email address will be used?

To Reproduce
Steps to reproduce the behavior:

  1. Implement google sign in using GoogleSignIn-iOS library
  2. Build the app and press the google sign up button to proceed with the signup process.
  3. In the google account integration popup, you will see that “name, email address, profile picture” are accessible in the user's account.

Expected behavior
I only need the user's email address. I want the popup to show the user that it only uses the email address.
As I understand it, name, email address, profile picture are the default public information in google account. However, I will only use the user's email address in my app via google sign-up, and I want the popup to show only the email address.
Is this possible?

Screenshots
image

Environment

  • Device: any iPhone
  • OS: any iOS
  • Browser: N/A

Additional context
I've tested it without passing scope in the sign in request, and I've tested it with explicitly adding only userinfo.email as scope, but in both cases the sign-in popup shows that name, email address, profile picture are accessible. I want only the email address to be marked as accessible.

let additionalScopes = ["https://www.googleapis.com/auth/userinfo.email"] 
GIDSignIn.sharedInstance.configuration = config
GIDSignIn.sharedInstance
  .signIn(withPresenting: rootViewController, hint: nil, additionalScopes: additionalScopes) { 
      ...
   }

Activity

  1. added
    bugSomething isn't working
    triageIssues that need to be triaged
    on Jul 17, 2024
  2. mdmathias commented on Jul 30, 2024

    @mdmathias
    Collaborator

    By default, GSI requests includes email and profiles scopes. You can see that here, and here.

    So, this behavior is "works as intended." We can leave this issue open to see if folks would like an option only get the email scope.

  3. added
    enhancementNew feature or request
    and removed
    bugSomething isn't working
    triageIssues that need to be triaged
    on Jul 30, 2024
  4. mdmathias commented on Jul 30, 2024

    @mdmathias
    Collaborator

    I'll also share that this feature would be a fairly straightforward thing to add, and we could help with reviews, etc.

  5. jin-jobs commented on Jul 30, 2024

    @jin-jobs
    Author

    Thank you for your review. We need this feature in our service and are making the suggestions above.
    I hope you will consider this proposal positively.

  6. hrishijavkar commented on Apr 19, 2025

    @hrishijavkar

    Hi @mdmathias , thanks for the context and guidance!

    I've forked the repo and implemented a minimal change that adds only the email scope by default, while still supporting additional scopes if provided. You can find commit here

    One thing I noticed during testing — even when the only granted scope is email, the Google Sign-In consent screen still says: “Google will share your name, email address, and profile picture…”

    Let me know if there's a way to influence that message more precisely or if any changes are needed to generate the PR.

    Looking forward to your feedback!

  7. masarusanjp commented on Jun 1, 2026

    @masarusanjp

    Hi @mdmathias , thanks for keeping this issue open for further feedback.

    I'd like to add another related use case: rather than just removing the profile scope while keeping email, I'd appreciate an option to fully control which scopes are requested — without the
    library automatically appending email and profile.

    Currently, GIDScopes.scopesWithBasicProfile: unconditionally adds both email and profile to whatever scopes are passed in. This means there's no way to, for example, request only a custom OAuth
    scope (e.g. https://www.googleapis.com/auth/calendar) without also triggering the basic profile consent UI.

    A possible API approach could be something like an overrideScopes: parameter (or a flag like includeBasicProfileScopes:NO) that bypasses the automatic scope injection and uses exactly the scopes
    provided by the caller.

    This would give developers full control while keeping the current behavior as the default.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions