Google Coordinate OAuth2 с сервисной учетной записью
У меня есть консольное приложение C # сGoogle Coordinate .Net библиотека и сервисная учетная запись открытой аутентификации.
private const string SERVICE_ACCOUNT_EMAIL = "[email protected]";
private const string SERVICE_ACCOUNT_PKCS12_FILE_PATH = @"\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(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) «Bad Request»). С помощьюобманщик Мне удалось увидеть ответ от службы Google OAuth. Объект ответа JSON:
{
"error" : "invalid_grant"
}
Я прочитал несколько статей, в которых предлагается изменить время на локальном сервере, чтобы соответствовать времени сервера Google OAth. Но после смены времени на одну и другую сторону проблема остается прежней. Не могли бы вы дать мне несколько идей, почему это происходит? Спасибо за все ответы!