Es gibt zwei Probleme in Ihrer Autorisierungs-URL.
Erstens ist die client_id in Ihrer URL nicht richtig. Normalerweise client_id
ist am Ende mit -, die client_id
in Authorization Code Flow for Server-side App zum Beispiel verwendet wird, ist es
dj0yJmk9ak5IZ2x5WmNsaHp6JmQ9WVdrOVNqQkJUMnRYTjJrbWNHbzlNQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD1hYQ--
Also ich denke, Ihr client_id
in falsch.
Das zweite Problem ist Ihre redirect_uri sollte die redirect_uri entspricht die Rückruf Domain Sie in Ihrer Anwendung festgelegt haben.
Bitte geben Sie die Domäne an, zu der Ihre Anwendung nach erfolgreicher Authentifizierung zurückkehren wird. Yahoo OAuth Flow leitet Benutzer nur dann auf eine URL um, wenn diese den Zugriff auf ihre privaten Daten autorisiert.
Also redirect_uri
müssen eine Domäne sein und http://localhost:8080
erfüllen diese Anforderung nicht. In meinem Test habe ich nur localhost.com
zum Beispiel:
public async Task<string> AuthorizeWithYahoo()
{
var clientId = "<My client id>";
var StartUri = new Uri($"https://api.login.yahoo.com/oauth2/request_auth?client_id={clientId}&response_type=code&redirect_uri=http://localhost.com");
var EndUri = new Uri("http://localhost.com");
WebAuthenticationResult WebAuthenticationResult = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None,
StartUri, EndUri);
if (WebAuthenticationResult.ResponseStatus == WebAuthenticationStatus.Success)
{
var responseData = WebAuthenticationResult.ResponseData;
return responseData;
}
else if (WebAuthenticationResult.ResponseStatus == WebAuthenticationStatus.ErrorHttp)
{
return $"HTTP Error returned by AuthenticateAsync() : {WebAuthenticationResult.ResponseErrorDetail.ToString()}";
}
else
{
return $"Error returned by AuthenticateAsync() : {WebAuthenticationResult.ResponseStatus.ToString()}";
}
}
Und nach Zeichen in, Sie so etwas wie sehen: