登录成功,但不返回 webAuthenticationResult 的值.请如何修复它
本文关键字:的值 何修复 webAuthenticationResult 返回 成功 登录 | 更新日期: 2023-09-27 18:28:32
WebAuthenticationResult webAuthenticationResult = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, new Uri(DropboxUrl), new Uri(callback_url));
if(webAuthenticationResult.ResponseStatus==WebAuthenticationStatus.Success)
{
GetAccessToken(webAuthenticationResult.ResponseData);
}
没有错误(登录成功(,但它没有返回到(它在WebAuthenticationResults停止 webAuthenticationResult= await(
webAuthenticationResult.ResponseStatus==WebAuthenticationStatus.Success
我不明白。几个月前,我已经正常使用它了。
更新
{
try
{
var SpotifyUrl = "https://api.vimeo.com/oauth/authorize?client_id=" + Uri.EscapeDataString(clientId) + "&response_type=code&redirect_uri=" + Uri.EscapeDataString("https://example/callback") + "&state=xyzbc&show_dialog=true";
var StartUri = new Uri(SpotifyUrl);
var EndUri = new Uri("https://example/callback");
WebAuthenticationResult WebAuthenticationResult = await WebAuthenticationBroker.AuthenticateAsync(
WebAuthenticationOptions.None,
StartUri,
EndUri);
if (WebAuthenticationResult.ResponseStatus == WebAuthenticationStatus.Success)
{
var responseData = WebAuthenticationResult.ResponseData;
await GetSpotifyUserNameAsync(WebAuthenticationResult.ResponseData.ToString());
}
else if (WebAuthenticationResult.ResponseStatus == WebAuthenticationStatus.ErrorHttp)
{
throw new Exception("HTTP Error returned by AuthenticateAsync() : " + WebAuthenticationResult.ResponseErrorDetail.ToString());
}
else
{
throw new Exception("Error returned by AuthenticateAsync() : " + WebAuthenticationResult.ResponseStatus.ToString());
}
}
请确保您的callbackUri
与您在DropboxUrl
中使用的重定向 URI 相同。
由于您在代码中使用DropboxUrl
,因此假设您正在使用WebAuthenticationBroker
来执行Dropbox授权,DropboxUrl
希望这样做(请参阅 https://www.dropbox.com/developers-v1/core/docs#oa2-authorize(:
https://www.dropbox.com/1/oauth2/authorize?response_type=token&client_id=<app key>&redirect_uri=<redirect URI>
当我们要获取令牌时,需要一个重定向 URI。我们需要在应用程序控制台中设置它。重定向 URI 并不重要,因为代理永远不会导航到此 URI,而是将控制权返回给应用程序。但是,我们可以将https://www.dropbox.com/1/oauth2/redirect_receiver
用作重定向 URI。它通常供客户端应用使用。
然后在WebAuthenticationBroker.AuthenticateAsync
方法中,我们需要将callbackUri
设置为与重定向 URI 相同。因为
指示 Web 身份验证完成的回调 URI。代理将此 URI 与其将导航到的每个 URI 进行匹配。
有关详细信息,请参阅 WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions, Uri, Uri)
方法中的回调 Uri。
下面是一个简单的示例:
public async Task<string> AuthorizeWithDropbox()
{
var appKey = "<App Key>";
var redirectUri = new Uri("https://www.dropbox.com/1/oauth2/redirect_receiver");
var dropboxUri = new Uri($"https://www.dropbox.com/1/oauth2/authorize?response_type=token&redirect_uri={redirectUri}&client_id={appKey}");
var result = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, dropboxUri, redirectUri);
if (result.ResponseStatus == WebAuthenticationStatus.Success)
{
return result.ResponseData;
}
else
{
return null;
}
}
返回值将如下所示:
https://www.dropbox.com/1/oauth2/redirect_receiver#access_token=<token>&token_type=bearer&uid=<uid>