2016-05-01 2 views
2

Я действительно искал его и не нашел подходящего ответа.«У пользователя нет учетной записи AdSense» при использовании учетной записи службы для доступа к API управления AdSense

У меня есть учетные записи AdSense и AdMob, которые используют один и тот же идентификатор издателя. Они активны, и когда я пытаюсь использовать API в https://developers.google.com/adsense/management/v1.4/reference/accounts/list, он отлично работает.

1) Создал аккаунт AdSense с моей личной электронной почтой.
2) Включена в API управления AdSense в https://console.developers.google.com/apis/credentials
3) создания учетной записи службы и загружены секреты CREDENTIAL в JSon файл
5) Ждал, по крайней мере 48 часов. Наверное, больше.
4) Мой файл pom.xml имеет следующие зависимости:

<dependency> 
    <groupId>com.google.apis</groupId> 
    <artifactId>google-api-services-adsense</artifactId> 
    <version>v1.4-rev160-1.21.0</version> 
</dependency> 
<dependency> 
    <groupId>com.google.http-client</groupId> 
    <artifactId>google-http-client-jackson2</artifactId> 
    <version>1.21.0</version> 
</dependency> 
<dependency> 
    <groupId>com.google.oauth-client</groupId> 
    <artifactId>google-oauth-client-jetty</artifactId> 
    <version>1.21.0</version> 
</dependency> 

5) Мой код

private static Credential authorize() throws Exception { 

    FileInputStream is = new FileInputStream("/data/admob-test.json"); 
    GoogleCredential credential = GoogleCredential.fromStream(is).createScoped(AdSenseScopes.all()); 
    credential.refreshToken(); 
    return credential; 
} 

private static AdSense initializeAdsense() throws Exception { 

    // Authorization. 
    Credential credential = authorize(); 

    HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); 
    JacksonFactory jsonFactory = new JacksonFactory(); 

    // Set up AdSense Management API client. 
    AdSense adsense = new AdSense.Builder(httpTransport, jsonFactory, credential).setApplicationName("random-app-name").build(); 

    return adsense; 
} 

public static void main(String[] args) { 

    try { 
     AdSense adsense = initializeAdsense(); 

     // I get an exception on the following line: 
     Accounts accounts = adsense.accounts().list().execute(); 

     if ((accounts.getItems() != null) && !accounts.getItems().isEmpty()) { 

      System.out.println("SUCCESS!"); 
     } 
     else { 

      System.out.println("FAIL!"); 
     } 
    } catch (Exception e) { 

     e.printStackTrace(); 
    } 
} 

6) Сообщение об ошибке

403 Forbidden 
{ 
    "code" : 403, 
    "errors" : [ { 
    "domain" : "global", 
    "message" : "User does not have an AdSense account.", 
    "reason" : "noAdSenseAccount" 
    } ], 
    "message" : "User does not have an AdSense account." 
} 

ли я что-то отсутствует? Я следил за каждой записью stackoverflow, которую я нашел по этому вопросу, но безрезультатно.

Когда я отлаживаю, объект учетных данных выглядит нормально, при этом загружаются все секреты учетной записи службы. Он получает AuthToken, когда я делаю credential.refreshToken(); команда. Я не понимаю, чего не хватает.

Любая помощь будет высоко оценена.

+1

Эй, ты это исправил еще? Получение той же проблемы. –

+0

Есть такая же проблемы – kirhgoff

ответ

0

из https://developers.google.com/adsense/management/getting_started «Учетные записи служб не поддерживаются ...»

Если вы будете следовать получать уставились руководство/примерам и включить автономный доступ можно создавать (и сохранить) многоразовый маркер, который может быть используется для будущих вызовов.

Если вы используете пример Java в https://github.com/googleads/googleads-adsense-examples/blob/master/java/v1.x/src/main/java/com/google/api/services/samples/adsense/cmdline/AdSenseSample.java взглянут в DATA_STORE_DIR

+0

Можете ли вы дать более подробную информацию? Что вы подразумеваете под «включением автономного доступа» и тем, что должно быть в DATA_STORE_DIR? – kirhgoff

Смежные вопросы