У меня есть консольное приложение 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();
...
}
На получение списка заданий из Coordinate службы есть DotNetOpenAuth.Messaging.ProtocolException произошло (внутреннее исключение «Удаленный сервер возвратил ошибку: (400) Bad Request»). Использование Fiddler Мне удалось увидеть ответ от службы Google OAuth. JSON объект ответа:
{
"error" : "invalid_grant"
}
Я прочитал некоторые статьи, которые предлагают изменить местное время сервера, чтобы соответствовать времени присяги сервера Google. Но после изменения времени на одну и ту же сторону проблема остается прежней. Не могли бы вы дать мне некоторые идеи, почему это происходит? Спасибо за все отзывы!
Большое спасибо за ваш ответ! Я пытался узнать какую-то информацию около полутора недель. Возможно, вы можете добавить свой ответ в Google Coordinate Documentation каким-то образом. Это очень полезно! –
Не могли бы вы указать, как его достичь в новой библиотеке Google.Apis. –