使用ASP.net/C#中的刷新令牌,ClientId和ClientSecret获取Google Drive API的UserCredential

时间:2014-11-25 07:15:58

标签: c# asp.net google-drive-api google-oauth google-api-dotnet-client

我可以按照此链接中的说明获取RefreshToken:How do I authorise a background web app without user intervention? (canonical ?)

现在我需要user credential来获取driveservice object。我搜索了很多,但无法找到确切的解决方案。

我可以使用以下链接的ClientIdClientSecret来获取访问令牌:Using OAuth 2.0 for Web Server Applications - offline

但之后我怎样才能user credential使用AccessToken?或者使用刷新令牌获取credential的任何直接方法。任何例子或建议。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可能希望尝试使用Client Lib而不是它。您需要做的就是运行以下代码一次。刷新令牌将由FileDataStore创建并存储在%appData%目录中。它下次运行它不会提示您进行身份验证,因为它已经拥有它。您还可以创建自己的iDataStore实现,以便将刷新令牌存储在您喜欢的位置。我喜欢当前目录LocalFileDatastore.cs

//Scopes for use with the Google Drive API
string[] scopes = new string[] { DriveService.Scope.Drive,
                                 DriveService.Scope.DriveFile};
// here is where we Request the user to give us access, or use the Refresh Token that was previously stored in %AppData%
UserCredential credential = 
            GoogleWebAuthorizationBroker
                          .AuthorizeAsync(new ClientSecrets { ClientId = CLIENT_ID
                                                            , ClientSecret = CLIENT_SECRET }
                                          ,scopes
                                          ,"SingleUser"
                                          ,CancellationToken.None
                                          ,new FileDataStore("Daimto.GoogleDrive.Auth.Store")
                                          ).Result;

代码从Google Drive API C#教程中删除。