Google Apps Marketplace APIのCustomerLicense

| 1件のフィードバック

Marketplaceで公開している自分のアプリケーションが、あるドメインでインストールされているかをチェックするAPIです。

Google Apps Marketplace APIのCustomerLicense
https://developers.google.com/apps-marketplace/v2/reference/customerLicense

リファレンスページで試すが403エラー

以下のページの Try it! で試したのですが、403エラーが出てしまいました。
https://developers.google.com/apps-marketplace/v2/reference/customerLicense/get

403 Forbidden

Cache-Control:  private, max-age=0
Content-Encoding:  gzip
Content-Length:  135
Content-Type:  application/json; charset=UTF-8
Date:  Fri, 07 Nov 2014 04:43:55 GMT
Expires:  Fri, 07 Nov 2014 04:43:55 GMT
Server:  GSE

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "forbidden",
        "message": "Not authorized to access the application ID"
      }
    ],
    "code": 403,
    "message": "Not authorized to access the application ID"
  }
}

Stack Overflowの以下の投稿を参考にソースコードを作成したところ、APIを利用してアプリケーションのインストール状況を確認できました。
http://stackoverflow.com/questions/21410538/error-consuming-customerlicense-app-marketplace-with-service-account-oauth2

ソースコード

以下のパラメータを任意に設定します。

  • SERVICE_ACCOUNT_EMAIL: Service Accountのメールアドレス
  • SERVICE_ACCOUNT_PKCS12_FILE_PATH: ダウンロードしたP12ファイルのパス
  • APPLICATION_ID: Google Developer ConsoleのProject Number(数字12桁)
  • CUSTOMER_ID: インストール状況をチェックするドメイン名
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException;
import java.util.Collections;

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;

public class CustomerLicense {
    public static void main(String[] args) throws GeneralSecurityException, IOException {
        String SERVICE_ACCOUNT_EMAIL = "103425845188-onbg603ons33o9becsffdauc6akcb548@developer.gserviceaccount.com";
        String SERVICE_ACCOUNT_PKCS12_FILE_PATH = "*****.p12";
        String SCOPE = "https://www.googleapis.com/auth/appsmarketplace.license";
        String APPLICATION_ID = "103425845188";
        String CUSTOMER_ID = "infoscoop.org";

        GoogleCredential credential = new GoogleCredential.Builder()
        .setTransport(new NetHttpTransport())
        .setJsonFactory(new JacksonFactory())
        .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
        .setServiceAccountScopes(Collections.singleton(SCOPE))
        .setServiceAccountPrivateKeyFromP12File(new File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
        .build();
        credential.refreshToken();
        String token = credential.getAccessToken();

        URL url = new URL("https://www.googleapis.com/appsmarket/v2/customerLicense/"+ APPLICATION_ID + "/" + CUSTOMER_ID);

        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.setRequestProperty("Authorization", "Bearer "+token);
        if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
            try {
                    InputStreamReader isr = new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8);
                    BufferedReader reader = new BufferedReader(isr);
                    String line;
                    while ((line = reader.readLine()) != null) {
                        System.out.println(line);
                    }
            } finally {
                if (connection != null) {
                    connection.disconnect();
                }
            }
        }
    }
}

実行結果

{"kind":"appsmarket#customerLicense","id":"103425845188/infoscoop.org","applicationId":"103425845188","customerId":"infoscoop.org","state":"ACTIVE","editions":[{"editionId":"default_edition","seatCount":-1}]}

Google Apps Marketplace APIのCustomerLicense」への1件のフィードバック

  1. ピンバック: Google Apps Marketplace APIのCustomerLicense | infoScoop開発者ブログ | なんでも芸能ニュース!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>