我们希望将Youtube v3 API与ASP.NET 4.5 / C#结合使用,通过控制台应用程序将视频上传到特定的YouTube频道。编译在Windows 7 Professional Development计算机上的Visual Studio 2015中完成。
因此,我们在Google Developer Console中创建了OAuth2凭据,并使用以下代码进行OAuth2授权握手
using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
{
GoogleAuthorizationCodeFlow.Initializer initializer = new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = GoogleClientSecrets.Load(stream).Secrets,
DataStore = new FileDataStore(GoogleWebAuthorizationBroker.Folder)
};
credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
initializer,
new[] { YouTubeService.Scope.Youtube },
user,
CancellationToken.None
);
}
到目前为止一切正常。如果之前未授权,则会打开一个浏览器窗口( access_type = offline& response_type = code ),我们可以登录Youtube帐户,选择频道,授予必要的访问权限,返回浏览器页面 localhost:portnumber / authorize?code = XYZ 其中写有“收到验证码。您可以关闭此窗口”,我们的控制台应用程序继续工作。这是我们开发机器上的工作流程。
但是,当我们将应用程序复制到Windows Server 2012时,会发生错误。浏览器窗口也会打开,我们可以登录并授予访问权限,但最终的浏览器页面 localhost:portnumber / authorize?code = XYZ 无法加载特定于浏览器的“连接失败“错误页面。
似乎没有任何进程附加到(随机?)端口号以读取接收到的代码信息,检索令牌并将其写入%AppData%/ Google.Apis.Auth。防火墙不会阻止任何事情。
我们的第一个猜测是名称解析问题。默认情况下,localhost在Windows服务器上解析为:: 1。不幸的是,当我们强制将IPv4分辨率强制为127.0.0.1
时,它仍然不起作用感谢您的每一个建议。
答案 0 :(得分:0)
好的,我找到了解决方案。
我们已将IIS8绑定到特定的IP地址,不包括127.0.0.1。
通过 netsh http add iplisten 添加本地IP地址后,网络服务器能够再次绑定到localhost套接字进行基于一次性代码的授权。