跳到主要內容

[開發] Apple App Store Connect API PHP串接筆記

這次要串接Apple App Store Connect API,前置步驟要產生Token卡很久。

很多文章都有提到,如何在Connect網頁生成Role以取得kid, iss 但卻很少人提到JWT Token的生成需要注意的地方,嘗試了很久才成功取得不會被說「401 NOT_AUTHORIZED Authentication credentials are missing or invalid.」 的Token啊~~(淚)

依照官方文件,使用 php套件 JWT.io (https://jwt.io/) 出的encode套件,安裝方式官網有提到。如果有用composer只要

composer require lcobucci/jwt

由於Apple是要用ES256所以 composer require firebase/php-jwt 不適用。

接著,在程式碼部分,官方文件是提到用內建builder的方式,但是內建builder有個參數kid沒有塞入,而且也有多塞入不用塞入的東西都會影響結果。(JWT其實就只是一個加密方式,把給的header與payload壓成用 . 分割的三段字串)

後來去看JWT.io提供的builder function下,自行塞入文件提到的六樣參數,外加用Connect提供的private.key(私鑰),壓出Token!

use Lcobucci\JWT\Builder;
use Lcobucci\JWT\Signer\Key;
use Lcobucci\JWT\Signer\Ecdsa\Sha256;

$signer = new Sha256(); //因為是Sha256所以要額外選擇編碼方式
$time = time();
$token = new Builder(); // 建立一個基本的builder
$token->setHeader('typ','JWT');  //把header塞入,但不用塞入 alg欄位,stackoverflow有人提到加了alg會錯於是我就把它移除了~
$token->setHeader('kid','[key ID]'); //後台提供[key ID],把[key ID]整個換自己的   

$token->set('iss','[Issuer ID]'); //後台提供[Issuer ID],把[Issuer ID]整個換自己的
$token->set('exp',time()+600); //Token有效期限,最長20分鐘,目前設為10分鐘
$token->set('aud','appstoreconnect-v1'); //固定


$token = $token->getToken($signer, new Key('[Private Key String]')); //由Coonect提供的private key這邊是直接把字串塞入,也可以用file include方式

echo $token; //印出取得的token就可以用Postman測試了!

接著,看了Connect文件(https://developer.apple.com/documentation/appstoreconnectapi/download_sales_and_trends_reports),死活看不懂query到底怎麼丟參數,怎麼丟怎麼不吃~(怒)

後來才發現,竟然是要連filter[]字樣也要丟上去網址做GET query...網站上都沒有範例啊啊啊~

這邊貼一個範例,以上面的sales report API為例:

https://api.appstoreconnect.apple.com/v1/salesReports?filter[frequency]=DAILY&filter[reportSubType]=SUMMARY&filter[vendorNumber]=86225164&filter[reportDate]=2019-10-01&filter[reportType]=SUBSCRIPTION&filter[version]=1_2

別忘了API header要加上 Authorization: Bearer [Token] 才能驗證過喔!

留言

這個網誌中的熱門文章

[新竹] 系統傢俱各家比較與心得(三商美福、安德康、木可、歐德、綠的)

最近花蠻多時間在比較系統傢俱,與趕著預售屋客變有關,不過也因此了解不少。以往都覺得系統傢俱較死板、無造型、設計。但這次的經驗,讓我對系統傢俱有較不一樣的感覺。

其實,系統傢俱是個蠻能「客製化」的設計,只要自己有做足功課,我認為每家系統傢俱都可以達到客戶喜好的風格、效果,而它們相較於木工親民的價格真的會讓人感動落淚。

我自己的感覺是,大家(如:綠的、三商美福)的系統傢俱在聘請設計師上,較有經驗也較有獨特見解,而且空間規劃較熟練,比較抓得到客戶的喜好與需求,當然價格較高。

小家(如:木可、安德康等)的系統傢俱最大好處在於價格親民,但設計師如果也願意用心,做出來的作品一定不輸大的。前提是,客戶自己必須明白自己要的是甚麼?喜好?需求?風格.......等。

[生活] 幸福新居落成

這次預售屋拖了很久,所以我們匆匆安排裝修,同時也還有一些地方需要修繕,整個忙翻天了!但仍然很滿意這個新家,不管是格局還是大小,打算至少再住個十年!

時程上原先預定於 102年12月可以交屋,拖到103年3月底才勉強交到一個差強人意仍須修繕的屋。匆匆簽了切結,就安排木工入場。木工張先生也是很配合,4月11日就幫我們正式入場,該保護的都做好保護就開始施工。

[生活] 愛惠浦淨水器濾心更換之S100

用了快兩年的愛惠浦淨水器 (Ever Pure),天才的我竟然連第一道都沒換,沒辦法嘛~濾心很貴.....orz

今天逛大潤發,問了價格馬上衝一發,3100元買一送一,一隻1550元還算可以接受。只是以我使用的速度,我猜搬家後還不會換下一隻...不過放著不用保存期限可以放三年...應該還可以吧......?!orz

總之,趁著便宜,撿便宜的心態趨使我買回家自己換濾心,人性啊人性.....順便買了一隻全適用的第一道濾心約 90元。0w0