testing instagram basic api on localhost
因 Meta Develop 開發政策,強制所有的用戶端 OAuth 都要使用 https 的 URL 才能被 Meta 認定為有效的 OAuth 重新導向 URL ,這會導致我們在地端測試時,會需要 https 的 URL 供我們做測試,這邊我們使用 ngrok 來產生一組 https 的 URL ,並帶著各位如何在地端使用 ngrok 來測試 instagram basic api
建立 instagram 的應用程式
在 Meta 開發人員工具創建應用程式
到 Meta for Developers 建立應用程式
再來需要選擇應用程式的類型及填寫名稱,這邊需要注意類型的選擇會導致該應用程式可使用的產品、權限及功能,詳情可以參考官方文件
點選 instagram 基本顯示的設定
在 instagram 基本顯示 > 基本顯示 中建立新的應用程式
新增 instagram 測試人員
完成上面的步驟後,點選左邊選項中的 角色 > instagram 測試人員的按鈕,輸入你要用來測試的 instagram 帳號
這時登入網頁版的 instagram ,在 設定 > 應用程式和網站 > 測試員邀請 ,會發現應用程式的邀請確認,點選接受就成功成為應用程式的測試人員
建立一個 web 服務
這邊以 golang 搭建一個簡單的網頁並把服務放在 80 port
|
|
把服務起起來並確認頁面有正常顯示,以上面範例,在瀏覽器
載入 localhost:80/ping
會出現以下圖例
設定 ngrok
安裝 ngrok
先到 ngrok 官網 下載對應的版本並註冊登入會員,初次安裝需先驗證 ngrok 的 agent,到 Your Authtoken 執行 Command Line 的指令,會將 ngrok 的 Authtoken 保存在你的電腦,授於 agent 使用 ngrok 所有功能的權限
完成後執行 $ ngrok http {port}
,就可以將 localhost:{port}
的服務對外開放,因為我服務使用 80 port
的關係,所以我要執行 $ ngrok http 80
,接著會看到以下圖片的樣子,就代表成功將地端的 80 port
對外開放,而紅色框框的 https 網址為你地端服務對外的網址,這時其他人就可以透過該網址連到你的網頁
設定應用程式
回到 Meta for Developers 左邊選項的 instagram 基本顯示 > 基本顯示 去設定 用戶端 OAuth 設定
、取消授權
、資料刪除要求
,在圖中的三個欄位填入 ngrok 產生的 https 網址
取得 instagram basic api 的 token
驗證測試人員
建構授權的視窗網址,{app-id}
為 instagram 基本顯示 > 基本顯示 > instagram 應用程式編號, {redirect-uri}
為有效的 OAuth 重新導向 URI
的網址(網址必須完全相同)
|
|
以我們剛剛產生的 https 網址為例
|
|
在瀏覽器載入網址後,會出現應用程式要求權限的說明
點選允許後,會跳轉到你在應用程式設定的重新導向 URI
的頁面,這時請觀察該網頁的網址
網址中的 code
到 #_
之間為測試人員的授權碼
|
|
將授權碼換成 token
將 {app-id}
、 {app-secret}
、 {redirect-uri}
、 {code}
換成你的 instagram 應用程式編號、 instagram 應用程式密鑰 、重新導向 URI 、授權碼,並輸入指令傳送請求
|
|
成功時,會回傳以下 json 格式
|
|
例如:
這時候就可以用 access_token
和 user_id
去串接 instagram basic api 了