谷歌和youtube api的ASP.NET站点授权问题

时间:2012-12-31 07:59:13

标签: asp.net authentication google-api youtube-api authsub

我已经在我的网站上实施了几个google API - 用于修改联系人导入和youtube上传。 虽然一切都在本地很好(在我自己的开发服务器的本地主机下),但是通过网站使用它们存在一些问题(托管在HostGator和1and1上,我到处都得到相同的错误) - 看起来像 身份验证问题。

该站点在ASP.NET 2.0上,这些是我得到的错误信息:

  1. 错误对于谷歌联系人(使用AuthSub) - 这是在我成功从谷歌的authsub收到会话令牌后发生的:

    The remote server returned an error: (401) Unauthorized.
    
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information 
    
    about the error and where it originated in the code. 
    
    Exception Details: System.Net.WebException: The remote server returned an error: (401) Unauthorized.
    
    Source Error: 
    
    
    Line 493:        ContactsQuery query = new ContactsQuery(ContactsQuery.CreateContactsUri("default"));
    Line 494:
    Line 495:        ContactsFeed feed = service.Query(query);
    Line 496:
    Line 497:        ArrayList emails = new ArrayList();
    
    Source File: d:\inetpub\vhosts\e-koren.com\httpdocs\home-cooking\EmailInvite.aspx.cs    Line: 495 
    
  2. 错误对于youtube视频上传(使用ClientLogin):

    Invalid credentials
    
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information 
    
    about the error and where it originated in the code. 
    
    Exception Details: Google.GData.Client.InvalidCredentialsException: Invalid credentials
    
    Source Error: 
    
    
    Line 71: //            try
    Line 72: //            {
    Line 73:                 FormUploadToken _token = request.CreateFormUploadToken(newVideo);
    Line 74: 
    Line 75:                 actionURL.Value = _token.Url + "?nexturl=" + Server.UrlPathEncode(Request.Url.ToString()+"?uuc=");
    
    Source File: d:\inetpub\vhosts\e-koren.com\httpdocs\home-cooking\youtubeUpload.aspx.cs    Line: 73 
    
  3. 任何人都知道它会是什么?

    谢谢, 阿萨夫

1 个答案:

答案 0 :(得分:0)

我最终设法解决了这个问题:

第一个错误(authsub和谷歌联系人) - 我将URI从“http”更改为“https”:

// V1
GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("cp",gn.ytApplicationName);

authFactory.Token = (String)Session["token"];

ContactsService service = new ContactsService(authFactory.ApplicationName);

service.RequestFactory = authFactory;

ContactsQuery query = new ContactsQuery(ContactsQuery.CreateContactsUri("default"));

// VERY IMPORTANT! adding HTTPS resolves google's bug (401 error)
query.Uri = new Uri("https://www.google.com/m8/feeds/contacts/default/full");

ContactsFeed feed = service.Query(query);

关于第二个错误(ClientLogin) - 看起来谷歌已经加强了围绕这种方法的安全措施 - 他们向用户发送了一封警告电子邮件,我想通过这个方式登录 - 只有当他遵循几个复杂的步骤时才会授权访问他的视频。

我发现这不是错误,而是政策,我想我也会转到AuthSub。

希望我也可以帮助其他人......

:)