经过身份验证的YouTube数据v3查询失败,显示403 Forbidden消息

时间:2013-07-10 21:04:53

标签: youtube-api

这是一个c#.NET应用程序。该应用程序进行了OAuth2认证的YouTube Data v3 ChannelList查询,该查询已运行两个月。最近,查询失败,显示来自Google的403 Forbidden消息。它从我们的Azure Web服务器以及在开发人员桌面上的Visual Studio中运行时失败。该查询适用于至少一个用户,但对于所有其他测试用户都失败。查询(此处列出)适用于API Explorer中的所有用户。我找不到从Google返回的其他错误说明。

更新(2013年7月15日):现在在将access_token添加到查询后运行查询。以前,它仅在Service对象中使用access_token成功执行,而不是显式的查询部分。虽然查询成功直接附加了access_token,但我们在YouTube嵌入式播放器上收到了下游JavaScript错误。不确定这是否相关。我看到6月下旬有一个.NET API更新。 @Ikailan,在Google上做了一些改变,打破了Service对象中的access_token auth。注意:我们DID更新到新API。 我们的代码是否需要更改才能使用2013年6月的API更新?

错误消息“远程服务器返回错误:(403)禁止。”

失败的方法,但现在可以使用添加到查询中的Auth令牌。

//Gets the channel information of the current user
public static ChannelListResponse GetCurrentUserChannel(string token)
{
    YouTubeService service = new YouTubeService(GlobalSettings.applicationName, GlobalSettings.developerKey);
    GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("YouTube", GlobalSettings.applicationName);
    authFactory.Token = token;
    service.RequestFactory = authFactory;

    ChannelListResponse response = new ChannelListResponse();

    try
    {
        System.IO.Stream resultStream = service.Query(new Uri("https://www.googleapis.com/youtube/v3/channels?part=id%2Csnippet%2CcontentDetails%2Cstatistics%2CtopicDetails&mine=true&access_token=" + authFactory.Token));
        using (var reader = new System.IO.StreamReader(resultStream))
        {
            string value = reader.ReadToEnd();
            response = JObject.Parse(value).ToObject<ChannelListResponse>();
        }
    }
    catch (Exception ex) { }
    return response;
}

抛出异常的行。添加了Auth Key(参见上面的代码)。现在查询成功执行。

System.IO.Stream resultStream = service.Query(new Uri("https://www.googleapis.com/youtube/v3/channels?part=id%2Csnippet&mine=true"));

但是,我们收到了嵌入式YouTube视频播放器的“拒绝访问”错误。

A first chance exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll
An exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll but was not handled in user code
Exception was thrown at line 4224, column 4 in http://localhost:49185/YotaCast_Prototype/Scripts/jquery-1.9.1.js
0x800a139e - JavaScript runtime error: SyntaxError
Exception was thrown at line 4242, column 4 in http://localhost:49185/YotaCast_Prototype/Scripts/jquery-1.9.1.js
0x800a139e - JavaScript runtime error: SyntaxError
Exception was thrown at line 360, column 9 in http://localhost:49185/YotaCast_Prototype/Scripts/foundation/foundation.js
0x800a1391 - JavaScript runtime error: 'Zepto' is undefined
Exception was thrown at line 1, column 97 in http://s.ytimg.com/yts/jsbin/www-embed-player-vflXN6WzI.js
0x80070005 - JavaScript runtime error: Access is denied.

0 个答案:

没有答案