2015-01-02 36 views
0

我已經安裝了.NET控制檯應用程序將執行以下操作:對於我個人的谷歌帳戶谷歌聯繫人API 3.0版(.NET) - OAuth2.0的CRUD操作

  • 訪問谷歌聯繫人API
  • 執行基本的CRUD(創建,讀取,更新,刪除)操作這些接觸

我相信會直截了當使用下列文件執行CRUD操作:

https://developers.google.com/google-apps/contacts/v3/#about_authorization_protocols

但是,我嘗試使用OAuth2.0驗證我的連接時發生了問題。

我使用Google.GData.Contacts .NET NuGet包使用的代碼從下面的例子:

https://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/samples/oauth2_sample/oauth2demo.cs?r=1159

OAuth2Parameters parameters = new OAuth2Parameters() { 
    ClientId = clientId, 
    ClientSecret = clientSecret, 
    RedirectUri = redirectUri, 
    Scope = scopes 
}; 

string url = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters); 
Console.WriteLine("Authorize URI: " + url); 
parameters.AccessCode = Console.ReadLine(); 

OAuthUtil.GetAccessToken(parameters); 

因爲這些代碼最後在2012年更新的,我擔心它可能不再適合我的任務。

主要問題:

  • 我不知道該parameters.AccessCode價值到底是什麼。這個數值來自哪裏?
  • 基於我的使用案例,我是否使用了正確的OAuth2.0方法?您可以爲服務帳戶,Web應用程序或本地應用程序設置身份驗證。以上代碼暗示本機應用
  • 有沒有更好的方式來處理我的任務?

回答

0

access code只能用於WebServer Applications

我不確定您的控制檯應用程序是否可以在可以啓動瀏覽器的環境中運行。

如果是(您的應用程序運行在可以啓動URL的環境中),請使用Installed Applications的文檔。

如果瀏覽器不存在,您可以使用Applications on limited-input devices的文檔。

如果您打算使用的庫(NUGET,不管)是否支持此流程,請不要擔心:編寫自定義代碼很容易。您可以使用任何能夠執行HTTP/HTTPS請求的庫,例如Windows.Web.Http.HttpClient(Windows 8及更高版本)。

此外,您可以使用聯繫人導入服務,如CloudSponge,該服務提供.Net API並支持其他聯繫人來源(以防將來擴展您的地址簿支持)。

0

AccessCode來自上面該行中創建的URL。看到這裏:

string url = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters); 

url包含一個URL現在爲您的瀏覽器。填寫在Chrome/Firefox /等,並確認谷歌請求獲取AccessCode。它看起來像這樣「4/bAQT1qf66vpkmfU8xDkoVZmedvVoYDH6KovzcHcA5pc」,但每次你調用URL時都會改變。

Console.WriteLine("Authorize URI: " + url); 

現在你可以看到的網址,但您可能無法將其從控制檯複製。但是,如果你把它放到你的瀏覽器中,它會導致一個谷歌對話框來獲得你的AccessCode。