1
我有一個C#控制檯應用程序,其中Google Coordinate .Net library和服務帳戶開放式身份驗證。Google協調帶服務帳戶的OAuth2
private const string SERVICE_ACCOUNT_EMAIL = "[email protected]";
private const string SERVICE_ACCOUNT_PKCS12_FILE_PATH = @"<path-to-private-key-file>\YYY-privatekey.p12";
private const string GOOGLE_COORDINATE_TEAM_ID = "ZZZ";
private CoordinateService BuildService()
{
X509Certificate2 certificate = new X509Certificate2(SERVICE_ACCOUNT_PKCS12_FILE_PATH, "notasecret", X509KeyStorageFlags.Exportable);
var provider = new AssertionFlowClient(GoogleAuthenticationServer.Description, certificate){
ServiceAccountId = SERVICE_ACCOUNT_EMAIL,
Scope = CoordinateService.Scopes.Coordinate.GetStringValue()
};
var auth = new OAuth2Authenticator<AssertionFlowClient>(provider, AssertionFlowClient.GetState);
return new CoordinateService(new BaseClientService.Initializer(){
Authenticator = auth
});
}
//some code that retrieves data from coordinate service
public void DoSomething()
{
CoordinateService service = BuildService();
var response = service.Jobs.List(GOOGLE_COORDINATE_TEAM_ID).Fetch();
...
}
在從配套服務檢索的工作列表有DotNetOpenAuth.Messaging.ProtocolException發生(內部異常「遠程服務器返回錯誤:(400)錯誤的請求」)。使用Fiddler我設法看到Google OAuth服務的響應。 JSON響應對象:
{
"error" : "invalid_grant"
}
我看了一些文章,建議爲了配合谷歌誓言服務器時更改本地服務器時間。但在改變時間到另一側後,問題仍然是一樣的。 你能給我一些想法,爲什麼發生這種情況? 感謝您的回覆!
非常感謝您的回覆!我試圖找出一些信息約半個星期。也許您可以以某種方式將您的答案添加到Google API協調文檔中。這非常有用! –
您可以指定如何在新的Google.Apis庫中實現它。 –