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. Но после смены времени на одну и другую сторону проблема остается прежней. Не могли бы вы дать мне несколько идей, почему это происходит? Спасибо за все ответы!

Ответы на вопрос(1)

Ваш ответ на вопрос