用户使用OAuth2登录后如何访问或获取Providerkey

时间:2019-04-06 06:43:47

标签: asp.net asp.net-mvc

我是ASP.Net MVC 5的新手,并使用内置身份来构建一个简单的ASP.net网站。而且我对C#也很陌生。

我已成功为OAuth2设置配置了我的Google帐户,并且可以成功登录到我的Google帐户。登录信息存储在“ ASPNetUserLogins”表中。

现在,我将无法获取“ ProviderKey”,以便使用Google API在我的GCP(谷歌云平台)中列出我的项目。

        public ActionResult Index()
        {
            if (User.Identity.IsAuthenticated)
            {
                var providerKey = GetProviderkey(User.Identity.GetUserId());

                // do some logic later. 
            }

            return View();
        }

        private string GetProviderkey(string UserID)
        {
            var _userManager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
            var user = _userManager.GetLogins(UserID);
            var providerKey = "";

            if (user != null)
            {
                var info = user.SingleOrDefault(u => u.Equals(user));
                providerKey = info.ProviderKey;
            }

            return providerKey;
        }

我得到了错误,我的变量“ info”为空。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

啊,好的..就解决了。 ;)

        private string GetProviderkey(string UserID)
        {
            var _userManager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
            var user = _userManager.FindById(UserID);
            var providerKey = "";

            if (user != null)
            {
                var info = user.Logins.SingleOrDefault(u => u.UserId == UserID);
                providerKey = info.ProviderKey;
            }

            return providerKey;
        }