Google Admob API - Java клиент - com.google.api.client.googleapis. json .GoogleJsonResponseException: 403 запрещено - PullRequest
1 голос
/ 27 февраля 2020

Я пытаюсь использовать Google Admob API Java клиент, описанный здесь , но я получил такой ответ:

{
  "code" : 0,
  "error" : {
    "code" : 403,
    "message" : "Request had insufficient authentication scopes.",
    "errors" : [ {
      "message" : "Insufficient Permission",
      "domain" : "global",
      "reason" : "insufficientPermissions"
    } ],
    "status" : "PERMISSION_DENIED"
  }
}

Вот как я получаю учетные данные:

    GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
            new InputStreamReader(GoogleConnector.class.getResourceAsStream("/client_secrets_tt.json")));
    // set up authorization code flow
    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
            httpTransport, JSON_FACTORY, clientSecrets,
            Collections.singleton("https://www.googleapis.com/auth/admob.report")).setDataStoreFactory(
            dataStoreFactory).build();
    // authorize
    return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize(userId);

Это мой клиент Admob:

AdMob adMobClient = new AdMob.Builder(
        httpTransport,
        jsonFactory,
        request -> {
            credential.initialize(request);
            request.setParser(new JsonObjectParser(jsonFactory));
        })
        .setRootUrl("https://admob.googleapis.com")
        .setApplicationName(applicationName)
        .build();
return adMobClient;

И я также вручную добавил область действия https://www.googleapis.com/auth/admob.report на экране согласия OAuth.

Может кто-нибудь помочь мне или подсказать, в чем может быть причина этого?

1 Ответ

0 голосов
/ 18 марта 2020

Попробуйте удалить учетные данные, сохраненные ранее в DataStore (т. Е. Проверьте каталог как ~ / .credentials / у себя дома). Go через полный поток снова.

В потоке OAuth:

  • код генерирует ссылку;
    • откройте его в режиме просмотра в режиме инкогнито;
    • войдите под своей учетной записью AdMob ;
    • примите согласный экран (с вашей учетной записью admob );
  • получить access_token и refresh_token ;
  • сохранить refresh_roken с хранилище данных;
  • сделать запрос с access_token ;

Большинство шагов будет выполнено с помощью GoogleAuthorizationCodeFlow кода.

Также вы можете проверить java образец на github:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...