解決方案
我想出瞭如何解決此問題。使用服務帳戶使用customerLicense應用程序市場時出錯OAuth2
的一切都在這裏首先是我的執行與服務帳戶:
// Build service account credential.
GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(Collections.singleton("https://www.googleapis.com/auth/appsmarketplace.license"))
.setServiceAccountPrivateKeyFromP12File(new File("/path/to/mykey/key.p12"))
// .setServiceAccountUser("NOT SET THIS LINE")
.build();
License build = new License.Builder(httpTransport, JSON_FACTORY, credential).setApplicationName("My Application").build();
Licenses execute = build.customerLicense().get("9999999999", "domain.test.com").execute();
本許可證的Builder對象是自己基於全新谷歌的API客戶端1.17及以上的實施。如果有人能夠指導我,我如何與社區其他人分享,我會很樂意去做。
最佳,
我已經發布了另一個線程,Google Apps Marketplace API customerLicense with OAuth2,解釋我的意圖與消費的OAuth2服務帳戶策略,這個API。
我都想盡方法和官員圖書館目前,我總是得到無效的OAuth頭消息或非授權
我要詳細說一下的是風景,什麼事情我都試過:
- 我有和Google App Marketplace使用服務帳戶OAuth2,因爲所有任務都在後臺執行。
- 此API項目也有服務帳戶密鑰和客戶端Web帳戶密鑰。
- 我發佈的應用程序僅限於我的域名,因爲我尚未開發。所以我爲我的域安裝了應用程序。
- 在這一點上,假設我是通過API項目ID和客戶ID(它是域名)來查詢客戶許可證的,我必須查看我的域的APP許可證。
- 我已使用此罐子https://developers.google.com/google-apps/marketplace/v2/developers_guide訪問許可API。
這是我的代碼:
String appName = "MY APP"; AppsMarketService service = new AppsMarketService(); service.appId = "NUMBER_APP_ID"; service.appName = appName; service.endpoint = "https://www.googleapis.com/appsmarket/v2/"; service.consumerKey = service.appId + ".apps.googleusercontent.com"; service.consumerSecret = "CLIENT_SECRET_FROM_WEB_OAUTH2_API_PROJECT"; service.authorize();
我得到403禁止如果我使用此代碼。
- 如果我從我的API項目web OAuth2更改了前綴clientId的appId,我得到了200但是body UNLICENSED。
- 我已將範圍添加到我的應用程序https://www.googleapis.com/auth/appsmarketplace.license,而且我仍得到相同的結果。
- 我曾嘗試也從服務帳戶握手管理員用戶獲得訪問令牌,然後用它的OAuth2訪問令牌訪問API許可和相同的結果無效的OAuth令牌
我的問題是:
- 有沒有什麼方法可以使用服務帳戶密鑰訪問此API,考慮到服務帳戶密鑰中沒有消費者密鑰,只有客戶端ID和私鑰文件?
- 是否有任何更新的庫與OAuth2一起使用,因爲我看到所有這些庫都使用OAuth1進行兩腳認證?
這將是巨大的,如果有人能幫助我,因爲我們正試圖給我們7個谷歌應用程序舊市場應用從您好!OAuth1遷移到OAuth2按谷歌要求,但我們已經在執行一些黑洞,如果我們也不會能夠查詢哪些域有我們的應用程序安裝。
最好,
我終於設法只使用服務帳號密鑰來使用授權API。 Java API中存在一些棘手的問題,我只能使用Python庫進行研究。對不起,Java的人,但在其他語言的一些實現更好,更完整。我使用新的google-api-client-1.17.0製作了許可證API的實施,我想與其他人分享。我可以在哪上傳? – jproyo