5
Czy ktoś ma prosty przykład użycia Google.Apis.Auth.OAuth z C# Webforms? Mogę znaleźć tylko te MVC.Google.Apis.Auth.OAuth dla formularzy internetowych
Czy ktoś ma prosty przykład użycia Google.Apis.Auth.OAuth z C# Webforms? Mogę znaleźć tylko te MVC.Google.Apis.Auth.OAuth dla formularzy internetowych
Minęło trochę czasu, ale pomyślałem, że może to być przydatne dla kogoś:
GoogleFlowMetaData:
public class GoogleFlowMetaData
{
private static readonly IAuthorizationCodeFlow flow =
new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = new ClientSecrets
{
ClientId = "your client ID",
ClientSecret = "your client secret"
},
Scopes = new[] { CalendarService.Scope.Drive/*or any service you want*/ },
DataStore = new FileDataStore("Drive.Api.Auth.Store")
});
public IAuthorizationCodeFlow Flow
{
get { return flow; }
}
}
AuthorizationCodeApp:
public class AuthorizationCodeApp : AuthorizationCodeWebApp
{
private readonly GoogleFlowMetaData flowData;
private readonly string redirectUri;
private readonly string state;
private readonly string userID;
public GoogleFlowMetaData FlowData { get { return flowData; } }
public AuthorizationCodeApp(GoogleFlowMetaData flowData, string redirectUri, string state, string userID):base(
flowData.Flow,redirectUri,state)
{
this.redirectUri = redirectUri;
this.state = state;
this.userID = userID;
}
public Task<AuthResult> AuthorizeAsync(CancellationToken taskCancellationToken)
{
return base.AuthorizeAsync(userID, taskCancellationToken);
}
}
teraz uruchomić zadanie Async gdziekolwiek chcesz aby zdefiniować coś takiego:
public async Task<string> IndexAsync(CancellationToken cancellationToken)
{
var result = await new AuthorizationCodeApp(new GoogleFlowMetaData(), "http://localhost:4356/API/GAuth","","beebee").
AuthorizeAsync(cancellationToken);
if (result.Credential != null)
{
var service = new DriveService(new BaseClientService.Initializer
{
// YOUR CODE SHOULD BE HERE..
});
}
else
{
return result.RedirectUri;
}
}
Aby wywołać powyższą funkcję, użyj asynchronicznie:
var cancelToken = new CancellationTokenSource();
var z = Task.Factory.StartNew(() => IndexAsync(cancelToken.Token));