При попытке авторизации в Google получить сообщение об ошибке: invalid_request ошибка при публикации сайта. Oauth 1.0

Я уже закончил сайт MVC, который использует Oauth 1.0
Когда я пытаюсь выполнить авторизацию с помощью учетной записи Google с localhost (из режима отладки), я свободно провожу авторизацию без каких-либо проблем, но когда я публикую свой сайт на сервере, у меня возникают некоторые проблемы, когда я нажимаю кнопку "Вход в Google", я получаю ошибку. пожалуйста, смотрите экран ниже.

Разработчики, пожалуйста, помогите мне решить эту проблему. Спасибо

PS 192.168.77.155 - это IP моего внутреннего сервера, но я не представляю, зачем это показывать.

введите описание изображения здесь

возвращение информации заяц:

введите описание изображения здесь

internal class ExternalLoginResult : ActionResult
        {
            public ExternalLoginResult(string provider, string returnUrl)
            {
                Provider = provider;
                ReturnUrl = returnUrl;
            }

            public string Provider { get; private set; }
            public string ReturnUrl { get; private set; }

            public override void ExecuteResult(ControllerContext context)
            {
                OAuthWebSecurity.RequestAuthentication(Provider, ReturnUrl);
            }
        }

public ActionResult ExternalLoginCallback(string returnUrl)
        {
            GooglePlusClient.RewriteRequest();

            var result = OAuthWebSecurity.VerifyAuthentication();
            if (result.IsSuccessful)
            {
                ProfilePicture helper = new ProfilePicture();

                // name of the provider we just used
                OauthProvider provider = helper.GetProvider(result.Provider);
                if ((int)provider == 0)
                {
                    Logger.Fatal("Unknown Oauth Provider try to SignIn. Check Providers Name (maybe it changeed)");
                    return null; //todo MessageBox for Unkown Provider, or something wrong
                }
                // provider's unique ID for the user
                var uniqueUserID = result.ProviderUserId;
                // since we might use multiple identity providers, then 
                // our app uniquely identifies the user by combination of 
                // provider name and provider user id
                var uniqueID = provider + "/" + uniqueUserID;

                // we then log the user into our application
                // we could have done a database lookup for a 
                // more user-friendly username for our app
                FormsAuthentication.SetAuthCookie(uniqueID, false);

                string userName;
                string nameAndLsatName = string.Empty;
                var userDataFromProvider = result.ExtraData;
                if (provider.Equals(OauthProvider.Twitter))
                {
                    userName = result.UserName;
                }
                else
                {
                    userName = userDataFromProvider["username"];
                    nameAndLsatName = userDataFromProvider["name"];
                }

                //Check if user already is in Db with Provider
                var chekUserName = Uow.Users.Data.Where(x => x.UserName == userName && x.UserGroup.Id == (int)provider).FirstOrDefault();
                if (chekUserName == null)
                {
                    MM.Data.Model.User user = new MM.Data.Model.User();

                    user.UserName = userName;
                    if (!provider.Equals(OauthProvider.Twitter))
                    {
                        user.FirstName = nameAndLsatName.Split(' ')[0];
                        user.LastName = nameAndLsatName.Split(' ')[1];
                    }
                    user.Email = userName; //it'a Email
                    if (provider.Equals(OauthProvider.Twitter))
                    {
                        user.ShowNameAndLastName = false;
                    }
                    else
                    {
                        user.ShowNameAndLastName = true;
                    }
                    user.GroupId = (int)provider;
                    if (provider.Equals(OauthProvider.Twitter))
                    {
                        user.ProfilePicture = helper.GetImageInBytesByProvider(provider, userName);
                    }
                    else
                    {
                        user.ProfilePicture = helper.GetImageInBytesByProvider(provider, uniqueUserID);
                    }
                    Uow.Users.Add(user);
                    Uow.SaveChanges();

                }

                //Valid Login
                //todo need improvement
                var userModel = Uow.Users.GetSingle(x => x.UserName == userName && x.UserGroup.Id == (int)provider);
                Session["User"] = new LoggedUserModel
                {
                    Id = userModel.Id,
                    UserName = userName,
                    ProfilePicture = userModel.ProfilePicture
                };

                Session["UserId"] = userModel.Id;

                //FormsAuthentication.SetAuthCookie(useruserNamename, false);
                if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                    && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                {
                    return Redirect(returnUrl);
                }
                return RedirectToAction("Index", "Home");

                // return View("", result);
            }
            return null; //need change
        }

1 ответ

На скриншоте, который вы прикрепили, я вижу, что redirect_uri - это ваш 192.168.77.155 ip. Если вы исправите это, Google перенаправит обратно на правильный IP-адрес.

Другие вопросы по тегам