【问题标题】:Need help getting email from google authentication需要帮助从谷歌身份验证获取电子邮件
【发布时间】:2020-08-29 23:40:17
【问题描述】:

我有一个 asp.net C# Web 应用程序。我创建的这个应用程序使用 AD 身份验证,只能在组织网络内访问。由于整个 COVID 问题,我需要将其移动到云服务中,以便用户可以访问。我的计划是从 AD 迁移到 google,因为该组织使用 google 服务。我能够按照here 的说明加入谷歌登录。但它没有收到电子邮件,我需要登录用户的电子邮件作为几个 sql 查询的参数。显然,在 2019 年,谷歌将这些信息的访问权转移到了他们的“人员”范围内??我能找到的所有示例都是针对 asp.net MVC 和 CORE 的!我只是在使用普通的 ASP.net!!!!任何建议都非常感谢!

【问题讨论】:

    标签: c# asp.net authentication oauth-2.0 google-api


    【解决方案1】:

    我找到了一个相对简单的答案。使用 Google 中设置的示例从前端调用 javascript,您可以调用 getBasicProfile()。从这里您可以获得电子邮件以及其他信息。我们可以将值设置为隐藏字段。从那里我们可以在后端访问它并做任何事情..

     <div class="g-signin2" data-onsuccess="onSignIn" runat="server"  data-theme="dark"></div>
    
    
    
    <asp:Button ID="btnProceed" CssClass="btn btn-primary" Enabled="false" runat="server" OnClick="Button1_Click" Text="Proceed" />
    
    
    <script type="text/javascript">
        function onSignIn(googleUser) {
            document.getElementById("con").style.display = 'block';  
        // Useful data for your client-side scripts:
        var profile = googleUser.getBasicProfile();
        console.log("ID: " + profile.getId()); 
        console.log('Full Name: ' + profile.getName());
        console.log('Given Name: ' + profile.getGivenName());
        console.log('Family Name: ' + profile.getFamilyName());
        console.log("Image URL: " + profile.getImageUrl());
        console.log("Email: " + profile.getEmail());
    
        // The ID token you can pass to your backend:
          var id_token = googleUser.getAuthResponse().id_token;
          console.log("ID Token: " + id_token);
          document.getElementById('<%=hEmail.ClientID%>').value = profile.getEmail();  //HiddenField Controls
          document.getElementById('<%=hName.ClientID%>').value = profile.getName(); //HiddenField Controls
          document.getElementById('<%=Gtoken.ClientID%>').value = id_token; //HiddenField Controls
    
      }
    </script>
    
    
    <asp:HiddenField ID="hEmail" runat="server" />
            <asp:HiddenField ID="hName" runat="server" />
            <asp:HiddenField ID="Gtoken" runat="server" />
    

    服务器后端

    protected void Button1_Click(object sender, EventArgs e)
        {
    
            var hidEm = hEmail.Value;
            var hidName = hName.Value;
    
            Session["email"] = hidEm;
            Session["fName"] = hidName;
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 2021-11-21
      相关资源
      最近更新 更多