我可以使用Google文件选择器从客户端获取访问令牌。但是访问令牌将在3600秒后过期。我挠头获取刷新令牌,但无法在C#ASP.NET上执行刷新令牌。有人可以帮助C#代码来了解和检索刷新令牌吗?这将非常有帮助。谢谢。
我尝试使用 GoogleWebAuthorizationBroker.AuthorizeAsync ,它在我的本地计算机上有效,但在生产IIS服务器上不起作用。我还尝试了 GoogleAuthorizationCodeFlow ,但无法继续使用它,我也不知道如何使用它。
IAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = new ClientSecrets
{
ClientId = System.Configuration.ConfigurationManager.AppSettings["GoogleDriveClientID"],
ClientSecret = System.Configuration.ConfigurationManager.AppSettings["GoogleDriveClientSecret"]
},
Scopes = Scopes,
DataStore = null
});
我尝试过这个,但是之后我不知道如何前进。
答案 0 :(得分:0)
似乎您正在尝试从C#
代码示例生成刷新令牌。
您可以尝试以下代码段:
刷新令牌示例:
public class AppFlowMetadata : FlowMetadata
{
private static readonly IAuthorizationCodeFlow flow =
new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = new ClientSecrets
{
ClientId = "yourClientId",
ClientSecret = "yourClientSecret"
},
Scopes = new[] { DriveService.Scope.Drive },
DataStore = new FileDataStore("Drive.Api.Auth.Store")
});
public override string GetUserId(Controller controller)
{
// In this sample we use the session to store the user identifiers.
// That's not the best practice, because you should have a logic to identify
// a user. You might want to use "OpenID Connect".
// You can read more about the protocol in the following link:
// https://developers.google.com/accounts/docs/OAuth2Login.
var user = controller.Session["user"];
if (user == null)
{
user = Guid.NewGuid();
controller.Session["user"] = user;
}
return user.ToString();
}
public override IAuthorizationCodeFlow Flow
{
get { return flow; }
}
}
注意::如果您有任何疑问,如何获取
ClientId
,ClientSecret
和Scope
,请参阅此docs MVC Example
如果您还有任何疑问,请随时分享。谢谢,祝您编程愉快!