1

我遇到了與this postGoogle play API返回錯誤

中所述相同的問題。我們已經使用了幾乎完全相同的代碼。我已經在下面試圖用兩個客戶端ID和谷歌的服務帳戶的電子郵件地址mehotd

setServiceAccountId(GOOGLE_SERVICE_CLIENT_EMAIL) OR 
setServiceAccountId(GOOGLE_CLIENT_ID) 

誤差變化在的A/C ID的變化。如果我使用的客戶端ID,錯誤是

400錯誤的請求{ 「錯誤」: 「invalid_grant」}

,如果我使用的服務的電子郵件ID,錯誤是

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

任何理念?

+0

你有沒有找到一個解決辦法? – Kalina

回答

1

似乎有一些證據表明Google Play API目前不能與服務帳戶(瘋狂)一起使用。有關於問題here的另一個線程。您可以閱讀Google服務帳戶here。您可以閱讀關於Android版Google Play API here的身份驗證。

一旦你完成了對谷歌API控制檯的舞蹈獲得refresh_token你可以得到一個訪問令牌是這樣的:

private String getAccessToken() 
{ 

    HttpClient client = new DefaultHttpClient(); 
    HttpPost post = new HttpPost("https://accounts.google.com/o/oauth2/token"); 
    try 
    { 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4); 
     nameValuePairs.add(new BasicNameValuePair("grant_type", "refresh_token")); 
     nameValuePairs.add(new BasicNameValuePair("client_id",  "YOUR_CLIENT_ID); 
     nameValuePairs.add(new BasicNameValuePair("client_secret", "YOUR_CLIENT_SECRET")); 
     nameValuePairs.add(new BasicNameValuePair("refresh_token", "YOUR_REFRESH_TOKEN")); 
     post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     HttpResponse response = client.execute(post); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
     StringBuffer buffer = new StringBuffer(); 
     for (String line = reader.readLine(); line != null; line = reader.readLine()) 
     { 
      buffer.append(line); 
     } 

     JSONObject json = new JSONObject(buffer.toString()); 
     return json.getString("access_token"); 
    } 
    catch (IOException e) { e.printStackTrace(); } 
    catch (JSONException e) { e.printStackTrace(); } 
    return null; 
} 
相關問題