2016-03-27 8 views
2

Ich habe bereits fertig MVC-Website, die Oauth 1.0
verwenden Wenn ich versuche, mit Google-Konto von localhost autorisieren (aus dem Debug-Modus) ich fließend Autorisierung ohne Probleme, aber wenn ich meine Website auf dem Server veröffentlichen habe ich ein Problem, wenn ich auf den Button "Google LogIn" klicke, bekomme ich einen Fehler. Bitte siehe Bildschirm unten.wenn ich versuche, Google-Berechtigung zu erhalten, erhalten Error: Invalid_request Fehler beim Standort veröffentlicht. OAuth 1.0

Entwickler bitte helfen Sie mir, dieses Problem zu beheben. Tank Sie

P.S. 192.168.77.155 -es ist meine interne Server IP, aber ich kann mir nicht vorstellen, warum es zu zeigen.

enter image description here

Rückkehr Informationen Hare:

enter image description here

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 
     } 

Antwort

0

im Screenshot, die Sie angebracht ist, sehe ich, dass redirect_uri ist Ihr 192.168.77.155 ip. Wenn Sie es korrigieren, googelt Google zurück zur korrekten IP-Adresse.

+0

meine Website nicht verwenden meine Server interne IP Nirgendwo (192.168.77.155) es ist keine öffentliche IP. –

+0

Bitte posten Sie den Code, den Sie zum Umleiten auf den Google-Bildschirm verwendet haben – Rajat

+0

Ich denke, es ist nicht Schuldgefühle, weil in Localhost alles gut funktioniert. aber ich aktualisiere bereits die Frage und sehe sie bitte –