2011-07-13 41 views
3

我正在使用ASP.NET MVC3(C#)編寫Web應用程序,並且需要從登錄用戶的Google帳戶獲取日曆和聯繫人)。使用DotNetOpenAuth從Google帳戶中同時獲取聯繫人和日曆

因爲我不想存儲用戶的憑證,所以我正在使用OAuth(但沒有使用OpenID - 我不希望我的用戶使用他們的Google帳戶登錄)。

我有以下代碼來獲得訪問令牌,後來用它來獲取數據:

var google = new WebConsumer(GoogleConsumer.ServiceDescription, this.TokenManager); 

// Is Google calling back with authorization? 
var accessTokenResponse = google.ProcessUserAuthorization(); 
if (accessTokenResponse != null) { 
    this.AccessToken = accessTokenResponse.AccessToken; 
    //SAVE ACCESS TOKEN TO DATABASE 
} else if (this.AccessToken == null) { 
    // If we don't yet have access, immediately request it. 
    GoogleConsumer.RequestAuthorization(google, GoogleConsumer.Applications.Contacts); 
} 

不幸的是,你可以看到,我只請求批准的聯繫人,以及RequestAuthorization方法不允許我設置多個應用程序。

我該怎麼做,而不需要針對不同範圍的幾個不同的標記? (一個用於日曆,一個用於聯繫人等)

回答

1

DotNetOpenAuth.ApplicationBlock項目中提供GoogleConsumer作爲源代碼。請隨意修改它以做你所需要的。

+0

好吧,所以我需要修改那個類..現在..我如何在谷歌uri授權中設置多個範圍? –

1

作用域可以被放置在一個字符串,用空格分隔

編輯:從海報的評論加

我用創建範圍string時,下面的代碼:

foreach (String s in Scopes) { 
    sb.Append(String.Format("{0}", s)); 
} 
scope = sb.ToString().Trim(); 

在哪裏ScopesStringsString[])的array,包含我想要使用的範圍。當您向Google請求授權時,您將看到登錄屏幕上顯示的請求服務列表。

+0

如果您提供了一些示例代碼,那麼這將是一個更有幫助的答案,並且可能會更深入地解釋爲什麼它與發佈者的問題有關。 –

+1

我創建範圍串 \t \t \t \t的foreach(字符串S IN作用域) \t \t \t \t { \t \t \t \t \t sb.Append(的String.Format(當使用下面的代碼 「{0}」,或多個)); 。 \t \t \t \t} \t \t \t \t範圍= sb.ToString()修剪(); 其中Scopes是一個包含我想要使用的範圍的字符串數組。 當您向Google請求授權時,您將在登錄屏幕中看到正在請求的服務列表。 –

相關問題