3

Android アプリケーションを通じて購入したサブスクリプションに関する情報を取得しようとしていますが、このリンクからこの応答を取得し続けます

https://www.googleapis.com/androidpublisher/v1/applications/[package]/subscriptions/[product id]/purchases/[subscription id]?access_token=[access token]

API コンソールで API をアクティブ化し、Web アプリケーション クライアント ID を作成しました。

API コンソールからのクライアント ID

次に、このリンクから指定された「コード」パラメーターを許可してコピーしました

https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&approval_prompt=force&redirect_uri=http://localhost&client_id=[client id]

そして、サーバーからphp経由でリフレッシュトークンとアクセストークンを取得します(そして、後で使用するためにリフレッシュトークンを保存します)

リフレッシュ トークンの取得 $url = " https://accounts.google.com/o/oauth2/token ";

$post_fields = array(
    "grant_type" => "authorization_code",
    "code" => urldecode($code),
    "client_id" => $client_id,
    "client_secret" => $client_secret,
    "redirect_uri" => urldecode($redirect_uri));

アクセストークンの取得

$url = "https://accounts.google.com/o/oauth2/token";

$post_fields = $fields = array(
    "grant_type" => "refresh_token",
    "client_id" => $client_id,
    "client_secret" => $client_secret,
    "refresh_token" => $refresh_token);
$content = get_content($url, $post_fields);

どちらの呼び出しも POST リクエストとして実行されます

function get_content($url, $post_fields) {
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
  curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  $result = curl_exec($ch);
  curl_close($ch); 
  return $result;
}

私の質問は、なぜ私はまだこの応答を Google から受け取っているのかということです

{
 "error": {
  "errors": [
   {
    "domain": "androidpublisher",
    "reason": "developerDoesNotOwnApplication",
    "message": "This developer account does not own the application."
   }
  ],
  "code": 401,
  "message": "This developer account does not own the application."
 }

}

4

1 に答える 1

1

同じ問題がありました。私が知っていることから、アプリケーションを所有していない (所有者ではない) アカウントから refresh_token を生成すると、この問題が発生すると言えます。したがって、所有者アカウントから実行する必要があり、機能します。

于 2013-06-28T13:44:39.100 に答える