本当にそれを探して、適切な答えが見つからなかった。サービスアカウントを使用してAdSense管理APIにアクセスするときに「ユーザーにAdSenseアカウントがありません」というメッセージが表示される
私はAdSenseとAdMobの両方のアカウントで同じサイト運営者IDを共有しています。彼らはアクティブで、https://developers.google.com/adsense/management/v1.4/reference/accounts/listでAPIを試してみるとうまくいきます。
1)私の個人的なメールでAdSenseアカウントを作成しました。
2))サービスアカウントを作成し、資格情報の秘密のJSONファイル
5をダウンロード)https://console.developers.google.com/apis/credentials
3でのAdSenseの管理APIを有効には少なくとも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エントリをたどってきました。
私がデバッグすると、信任状オブジェクトは正常に見え、すべてのサービスアカウントの秘密情報がロードされます。私がcredential.refreshToken()を実行すると、AuthTokenが取得されます。コマンド。私は何が欠けているのか分からない。
任意の助けもいただければ幸いです。あなたが取得見つめガイド/例に従うと、オフラインアクセスを有効にした場合https://developers.google.com/adsense/management/getting_started から
で見てねえ、あなたはまだこれを修正しましたか?同じ問題を起こす –
同じ問題があります – kirhgoff