GoogleWebAuthorizationBroker的Googleneneneba API授权:如何管理web应用程



我正在使用函数调用Google Api身份验证

public static Google.Apis.Drive.v3.DriveService GetService()
{
//get Credentials from client_secret.json file 
UserCredential credential;
var CSPath = MyServer.MapPath("Content");
using (var stream = new FileStream(Path.Combine(CSPath, "client_secret.json"), FileMode.Open, FileAccess.Read))            {

string credPath = MyServer.MapPath("content/token");
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.FromStream(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
}
//create Drive API service.
Google.Apis.Drive.v3.DriveService service = new Google.Apis.Drive.v3.DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "GoogleDriveRestAPI-v3",
});
return service;
}

它将Token存储在应用程序下的content\Token文件夹中。

我正在使用此功能从用户Google Drive中检索一些文件。

它对一个用户来说运行良好,但我想在我们的应用程序中实现它,这样每个用户都会从他自己的Google Drive帐户中检索文件。

这个senario与谷歌文件选择器配合良好

我的问题是允许每个用户使用hios自己的谷歌驱动器帐户

GoogleWebAuthorizationBroker。AuthorizeAsync默认情况下使用fileDatastore,它将用户凭据存储在machines%appdata%文件夹中。它为用户凭证创建的文件的名称由"表示;用户";。

UserCredential credential;
using (var stream = new FileStream(clientSecretsJsonFilePath
,FileMode.Open
,FileAccess.Read))
{   
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new[] { DriveService.Scope.Drive,  DriveService.Scope.DriveFile },
"LookIAmAUniqueUser",
CancellationToken.None,
new FileDataStore("Drive.Auth.Store")                               
).Result;
}

会导致

谷歌。Apis。Auth。OAuth2.Respones.TokenResponse-LookIAmAUniqueUser。TokenResponse LookIAmAUniqueUser

Google.net–FileDatastore解密

所以如果你改变";用户";您将以不同的用户身份存储它。当你把它作为一个已安装的应用程序运行时,你需要通过某种方式让你的桌面应用程序知道它是一个不同的用户。然后为每个用户发送一个不同的字符串。

相关内容

  • 没有找到相关文章