使用服務帳戶(ServiceAccount)獲取訪問GoogleAPI的令牌(token)

前置知識
  1. RESTful API 格式
  2. Google API OAuth 2種認證方式
User Story

我們想通過訪問 GooglePlay Voided Purchase API 獲取某個應用的用戶退款信息。而Google則提供了一個無效購買的查詢接口宋雏。

分析

先來看看這個 API 的用例

GET https://www.googleapis.com/androidpublisher/v2/applications/
[your_package_name]/purchases/voidedpurchases?access_token=[your_auth_token]

Voided Purchase API 的請求方式為GET芜飘,url需要的參數(shù)有2個,

  1. your_package_name 對應查詢應用的包名磨总,類似 com.google.android.apps.map 查詢開發(fā)者賬戶設置的包名可知

  2. your_auth_token ,身份認證所需的token嗦明,也就是本文的獲取重點。

簡要訪問步驟

1.獲取服務賬戶 Service Account

2.創(chuàng)建訪問程序蚪燕,加載Service Account文件娶牌,獲取token并訪問請求API

如何創(chuàng)建服務賬戶 Service Account?

Google API Console 的界面會有不定期的改動馆纳,因此功能位置有可能變動
登錄開發(fā)者的賬號后诗良, 在Google API Console的頁面

點擊進入服務帳戶管理頁面

根據(jù)指南,創(chuàng)建/選擇 工程(project)鲁驶,然后創(chuàng)建服務帳戶

創(chuàng)建服務帳戶

創(chuàng)建認證文件

點擊Create Key

選擇JSON鉴裹,并好好保存。

選擇JSON
好好保存

注: 因為對于Voided Purchase API钥弯,我們需要讀取財務數(shù)據(jù)径荔,還需要對這個Service Account授予“查看財務報告(View financial reports)”的權限

在程序中使用認證文件獲取Token

示例代碼

import java.io.FileInputStream;
import java.util.Arrays;
import java.util.List;

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;

public class GoogleOAuth2ServiceAccountSample {

    /** OAuth 2.0 scopes. 重要,規(guī)范訪問者的查看范圍*/
    private static final List<String> SCOPES = Arrays.asList(
            "https://www.googleapis.com/auth/androidpublisher");

    public static void main(String[] args) {
        try {
            // 根據(jù)Service Account文件構造認證實例 GoogleCredential
            GoogleCredential credential = GoogleCredential
                    .fromStream(new FileInputStream(
                            "Google_Wallet-94e38f1f23f7.json"))// 加載服務帳戶認證文件
                    .createScoped(SCOPES);

            // 刷新token
            credential.refreshToken();

            // 獲取token
            System.out.println(credential.getAccessToken());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
參考資料

無效購買API 指南(英語)
Voided Purchase API
Google API 入門(繁體)
【JSDC客座文章】第一次接觸Google API就上手

各種坑

Google API的訪問資料都比較分散脆霎,我查看了好幾個示例代碼都沒有提及獲取token的方法总处,以及多數(shù)是使用OAtuh2回調訪問的教程(即類似跳轉到Google登錄界面,需要確認登錄/授權xx應用的那種睛蛛。)

此外鹦马,雖然知道getAccessToken可以獲取到token, 但一直是null, 查了StackOverFlow才知道需要先調用refreshToken.
關于SCOPE,很多示例和代碼都是提及username和mail address. 實際上對于Google內置API的訪問忆肾,需要用到androidpublisher荸频,否則一直返回403,沒有授權客冈。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末旭从,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子郊酒,更是在濱河造成了極大的恐慌遇绞,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件燎窘,死亡現(xiàn)場離奇詭異摹闽,居然都是意外死亡,警方通過查閱死者的電腦和手機褐健,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門付鹿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澜汤,“玉大人,你說我怎么就攤上這事舵匾】〉郑” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵坐梯,是天一觀的道長徽诲。 經常有香客問我,道長吵血,這世上最難降的妖魔是什么谎替? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蹋辅,結果婚禮上钱贯,老公的妹妹穿的比我還像新娘。我一直安慰自己侦另,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布褒傅。 她就那樣靜靜地躺著,像睡著了一般樊卓。 火紅的嫁衣襯著肌膚如雪拿愧。 梳的紋絲不亂的頭發(fā)上碌尔,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音券敌,去河邊找鬼。 笑死待诅,一個胖子當著我的面吹牛叹坦,可吹牛的內容都是我干的。 我是一名探鬼主播卑雁,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼募书,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了测蹲?” 一聲冷哼從身側響起莹捡,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扣甲,沒想到半個月后篮赢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年启泣,在試婚紗的時候發(fā)現(xiàn)自己被綠了涣脚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡寥茫,死狀恐怖遣蚀,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情纱耻,我是刑警寧澤妙同,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站膝迎,受9級特大地震影響粥帚,放射性物質發(fā)生泄漏。R本人自食惡果不足惜限次,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一芒涡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卖漫,春花似錦费尽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至突委,卻和暖如春柏卤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背匀油。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工缘缚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人敌蚜。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓桥滨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親弛车。 傳聞我的和親對象是個殘疾皇子齐媒,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)纷跛,斷路器喻括,智...
    卡卡羅2017閱讀 134,672評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,185評論 25 707
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,826評論 6 342
  • 新一季的奇葩說又上線了,tm叔作為奇葩說的忠實粉絲忽舟,那么就開一起tmc內部的奇葩專輯吧双妨。 1號奇葩 德先生淮阐。 德先...
    823dcff35f64閱讀 688評論 3 2
  • 孔夫子一直熱心于從政可惜魯不用他,但打算起用他學生刁品∑兀孔夫子本則是在宛轉地表達自己從政的熱切欲望和找借口插手。 我要...
    海水藍閱讀 313評論 0 0