Ich habe wirklich nachgeschlagen und keine passende Antwort gefunden.Die Meldung "Nutzer hat kein AdSense-Konto" bei der Verwendung eines Dienstkontos für den Zugriff auf die AdSense-Verwaltungs-API
Ich habe sowohl AdSense- als auch AdMob-Konten mit derselben Publisher-ID. Sie sind aktiv und wenn ich die API in https://developers.google.com/adsense/management/v1.4/reference/accounts/list versuche, funktioniert es gut.
1) Ein AdSense-Konto mit meiner persönlichen E-Mail-Adresse erstellt.
2) Aktiviert die AdSense Management API in https://console.developers.google.com/apis/credentials
3) Erstellt ein Dienstkonto und heruntergeladen die Geheimnisse der Credential JSON-Datei
5) Wartete mindestens 48 Stunden. Wahrscheinlich mehr, jetzt.
4) Meine pom.xml Datei diese Abhängigkeiten:
<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) Mein Code
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) Fehlermeldung
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."
}
ich etwas fehle? Ich habe jeden Stack-Overflow-Eintrag, den ich über dieses Thema gefunden habe, vergeblich verfolgt.
Wenn ich debugge, sieht das Anmeldedatenobjekt OK, mit allen Dienstkontogeheimnissen geladen. Es erhält ein AuthToken, wenn ich das credential mache. RefreshToken(); Befehl. Ich verstehe nicht, was fehlt.
Jede Hilfe würde sehr geschätzt werden.
Hey verwenden, haben Sie dies noch festgelegt? Das gleiche Problem bekommen. –
Haben Sie das gleiche Problem – kirhgoff