2015-10-14 86 views
1

嗨我想读谷歌驱动器API使用谷歌api示例的电子表格。谷歌驱动器API到C#

但我得到同样的错误:“类型‘Google.GData.Client.GDataRequestException’未处理的异常发生在Google.GData.Client.dll

附加信息:认证请求的执行返回意想不到的结果: 404“

我确定我输入了正确的登录名和密码。

这里是代码:

/// <summary> 
/// Interaction logic for MainWindow.xaml 
/// </summary> 
public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     SpreadsheetsService myService = new SpreadsheetsService("exampleCo-exampleApp-1"); 
     myService.setUserCredentials(myusername, password);    
     SpreadsheetQuery query = new SpreadsheetQuery(); 
     SpreadsheetFeed feed = myService.Query(query); 

     Console.WriteLine("Your spreadsheets:"); 
     foreach (SpreadsheetEntry entry in feed.Entries) 
     { 
      Console.WriteLine(entry.Title.Text); 
     } 

    } 
} 
+0

能否请您分享您使用自己验证码?如果您遵循教程,则应在client_secret.json文件中注意您的身份验证。 https://developers.google.com/drive/web/quickstart/dotnet – Rivero

+0

驱动器中的错误404通常代表未找到文件,但错误消息似乎与验证有关。 – Rivero

+0

我更新了代码。还是一样的错误。 – Barakr

回答

1

的的GData API中的旧身份验证方法已被弃用。您需要使用OAuth2。


此示例要求您使用以下的NuGet包及其依赖:

  • Google.GData.Spreadsheets

而且,你必须去https://console.developers.google.com和注册应用程序和为其创建凭据,以便您可以输入CLIENT_ID和CLIENT_SECRET。

这是我用来放一起本例中的文档:https://developers.google.com/google-apps/spreadsheets/

using System; 
using System.Windows.Forms; 
using Google.GData.Client; 
using Google.GData.Spreadsheets; 

namespace ConsoleApplication4 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string CLIENT_ID = "YOUR_CLIENT_ID"; 
      string CLIENT_SECRET = "YOUR_CLIENT_SECRET"; 
      string SCOPE = "https://spreadsheets.google.com/feeds https://docs.google.com/feeds"; 
      string REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob"; 

      OAuth2Parameters parameters = new OAuth2Parameters(); 

      parameters.ClientId = CLIENT_ID; 
      parameters.ClientSecret = CLIENT_SECRET; 
      parameters.RedirectUri = REDIRECT_URI; 
      parameters.Scope = SCOPE; 

      string authorizationUrl = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters); 
      MessageBox.Show(authorizationUrl); 
      Console.WriteLine("Please visit the URL in the message box to authorize your OAuth " 
       + "request token. Once that is complete, type in your access code to " 
       + "continue..."); 
      parameters.AccessCode = Console.ReadLine(); 

      OAuthUtil.GetAccessToken(parameters); 
      string accessToken = parameters.AccessToken; 
      Console.WriteLine("OAuth Access Token: " + accessToken); 

      GOAuth2RequestFactory requestFactory = 
       new GOAuth2RequestFactory(null, "MySpreadsheetIntegration-v1", parameters); 
      SpreadsheetsService service = new SpreadsheetsService("MySpreadsheetIntegration-v1"); 
      service.RequestFactory = requestFactory; 

      SpreadsheetQuery query = new SpreadsheetQuery(); 

      SpreadsheetFeed feed = service.Query(query); 

      // Iterate through all of the spreadsheets returned 
      foreach (SpreadsheetEntry entry in feed.Entries) 
      { 
       // Print the title of this spreadsheet to the screen 
       Console.WriteLine(entry.Title.Text); 
      } 
      Console.ReadLine(); 
     } 
    } 
}