跳到主要內容

[開發] 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日就幫我們正式入場,該保護的都做好保護就開始施工。

[生活] 新居落成之三房兩廳極簡無印風裝潢~安德康系統櫃 vs B&Q特力屋輕裝潢

偶然下,又有裝潢新居的機會,這次希望節省預算,含冷氣、基本生活電器、希望節省在50萬內,又不想失去新居裝潢的品味,再次要自己來擔任統包跟設計師的苦命監工。 如果有人有興趣看五年前的分享文,任意門如下: 👇 [生活] 幸福新居落成 [新竹] 系統傢俱各家比較與心得(三商美福、安德康、木可、歐德、綠的) 新居位於高樓,景觀採光還真不錯,搭配無印風應該也會美美的,加上之前有於IKEA購置的傢俱(衣櫃、電視櫃、書桌、餐桌、小孩翻轉床、16格櫃),傢俱都偏向淺木色。 系統櫃還是找 竹北安德康 這次製作的項目有,玄關櫃、鞋櫃、電視櫃與清水模電視牆、餐桌旁電器櫃,價格約13萬8000元。設計師是江樂軒小姐,哈哈哈~但人很親切好溝通,可以給一個具體的想法請他設計,但是要記得提醒他隔天有約,很忙容易忘記?!XD B&Q的施工項目有,冷氣水排遷移後修補、天花燈具安裝(不含燈具、LED燈是在PCHOME買的)、弱電箱包覆牆改刷黑板漆、走廊天花裝飾、客廳單邊間接照明、三房一廳冷氣盒、客廳窗簾盒。本建案建商有附天花平釘,所以就省錢沒重新做,不過有些地方做的是有些粗糙...總共93000元。 字好多,先來看看施工過程~ 會找B&Q做木工的契機是,在B&Q的活動購買了四台冷暖氣,一共11萬7000元,送的折價券多花4000元就可以買一台林內的熱水器,蠻划算。後來冷氣因為要改水排位置,加上最後冷氣管線包覆額外多出了33000元工錢,這邊就不確定到底整體下來是不是有比電器行便宜?! B&Q師傅基本地板保護後,便開始拉冷氣管 冷氣管線最早拉,後來才開始改水排。 主臥水牌加冷氣盒 客廳間接照明、水排位移、走廊裝飾柱 客廳窗簾盒 因為想說讓同家廠商完成,配合度應該相對比較高? 加上木工報價全室做起來含水排修復、建照等油漆93000元,覺得還算經濟實惠。 弱電箱包覆,裡面就是弱電鐵門不好看,做了一個十公分厚的包覆,表層設計成黑板 完成冷氣安裝與油漆,淺間照效果也還是不錯的 B&Q特力屋整個工程的時程大約才10天左右,算是蠻有效率。 師傅上,我覺得品質不差,不過監工可能要勤快一點,免得與預期有落差,油漆品質倒是稍嫌隨性,黑板漆漆的不是很均勻。 系統櫃裸裝