Ich versuche, Google Kalender in meine Anwendung zu integrieren und habe Probleme mit der OAuth-Autorisierung, die ein RefreshToken abgibt. Ich erhalte ein AccessToken ohne Problem, aber die RefreshToken-Eigenschaft ist null. Siehe die Linie markiert "ERROR HIER:" Denn wo ich das Problem aussieht habeWarum erhalte ich von einer Google OAuth-Anfrage kein RefreshToken?
Mein Asp.Net MVC-Controller (mit dem Namen OAuthController
) wie folgt aus:
public ActionResult Index()
{
var client = CreateClient();
client.RequestUserAuthorization(new[] { "https://www.googleapis.com/auth/calendar" }, new Uri("http://localhost/FL.Evaluation.Web/OAuth/CallBack"));
return View();
}
public ActionResult CallBack()
{
if (string.IsNullOrEmpty(Request.QueryString["code"])) return null;
var client = CreateClient();
// Now getting a 400 Bad Request here
var state = client.ProcessUserAuthorization();
// ERROR HERE: The RefreshToken is NULL
HttpContext.Session["REFRESH_TOKEN"] = Convert.ToBase64String(Encoding.Unicode.GetBytes(state.RefreshToken));
return JavaScript("Completed!");
}
private static WebServerClient CreateClient()
{
return
new WebServerClient(
new AuthorizationServerDescription()
{
TokenEndpoint = new Uri("https://accounts.google.com/o/oauth2/token"),
AuthorizationEndpoint = new Uri("https://accounts.google.com/o/oauth2/auth"),
ProtocolVersion = ProtocolVersion.V20
}
, _GoogleClientId, _GoogleSecret);
}
ich in den Google-API-Dokumente zu sehen, dass Ich muss sicherstellen, dass die access_type
Anforderung für ein RefreshToken auf offline
gesetzt ist, um gesendet zu werden. Wie setze ich diesen Wert in meiner Authenticator-Anfrage?
Ich habe meinen Code abgespeckt, und jetzt bekomme ich einen 400 Bad Request Fehler beim Versuch, Google abzufragen. –
Ich löste mein Problem, indem ich die HttpRequests manuell an Google kodierte. Ich werde sanieren und Code als Antwort eingeben –