我一直在研究Oauth2的过程。我正在写一个C#win表单应用程序。我试图弄清楚是否有办法做一个http请求来获取授权代码而不是弹出一个Web浏览器,并要求“授予访问权限”。如果必须这样做,我想知道我如何将该代码传递给该程序?我不确定如何将其传递到控制台,因为我使用的是C#表单应用程序。
public static IAuthorizationState getState(NativeApplicationClient arg)
{
IAuthorizationState state = new AuthorizationState(new[] {AnalyticsService.Scopes.Analytics.GetStringValue()});
state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
Uri authUri = arg.RequestUserAuthorization(state);
Process.Start(authUri.ToString());
Console.Write(" Authorization Code: ");
string authCode = Console.ReadLine();
Console.WriteLine();
return arg.ProcessUserAuthorization(authCode, state);
}
答案 0 :(得分:0)
您可以从应用中调用浏览器控件。用户成功登录Google并从该浏览器控件授权您的应用后,请从浏览器控件所在页面标题中解析授权码。
见这里:
如果您将redirect_uri设置为urn:ietf:wg:oauth:2.0:oob,Google的授权服务器将向浏览器返回一个页面,如下所示。然后,您的应用程序可以从页面标题中提取授权代码。
小心地准确地解析代码的描述方式。然后继续关闭浏览器控件并执行您需要执行的操作。