Google play API returns error

人走茶凉 提交于 2019-12-11 06:36:53

问题


i am getting the same issue as described in this post

. we have used almost exactly the same code. i have tried both with Client ID and Email address of the google service account in below mehotd

setServiceAccountId(GOOGLE_SERVICE_CLIENT_EMAIL) OR
setServiceAccountId(GOOGLE_CLIENT_ID)

error changes with the change in a/c id. if i use client id, error is

400 Bad Request { "error" : "invalid_grant" }

and if i use service email id, error is

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." }

any idea?


回答1:


There appears to be some evidence that Google Play API does not currently work with Service Accounts (madness). There is another thread on the issue here. You can read about the Google Service Accounts here. You can read about authentication for Android Google Play API here.

Once you have done the dance on the Google API Console to get a refresh_token you can get an access token like this:

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;
}


来源:https://stackoverflow.com/questions/11258349/google-play-api-returns-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!