LoginSignup
2
2

More than 5 years have passed since last update.

PythonでFirebase Dynamic Links APIを叩く

Posted at

はじめに

公式のドキュメント は用意されていましたし、基本その通りにやりば問題ないと思いますが、少し詰まってしまったポイントもあったのでメモがてらまとめます。

手順

Firebaseの設定

Firebase console からログイン。
FirebaseのAPI KEYを確認しておく。
次にプロジェクトの設定へ移動。
「アプリを追加」からiOS, Androidそれぞれ以下の値を入力して追加。以下は全て必須。

iOS

  • Bundle ID
  • App Store ID
  • App ID Prefix

App ID PrefixはUniversal Link用のapple-app-site-associationが裏側で生成されるのでそれに使われる。

Android

  • パッケージ名

Firebase Dynamic Linksのドメインを確認する

適当に追加してみる。
ここで何かしらエラーが出たらアプリの追加をミスっている。
リンクを追加するとリンク一覧テーブルの左上に以下のようなドメインが表示されているはずなのでメモっておく(重要)。
https://xxx.app.goo.gl/

Pythonから叩いてみる

import requests


url = "https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=FIREBASE_API_KEY"
data = {
    "dynamicLinkInfo": {
        "dynamicLinkDomain": "xxx.app.goo.gl",
        "link": "http://example.com/",
        "androidInfo": {
            "androidPackageName": "com.example.AndroidApp"
        },
        "iosInfo": {
            "iosBundleId": "com.example.iOSApp"
        }
    }
}
result = requests.post(url, json=data)

result.ok がtrueなら成功してます。
成功していれば result.json() にURLが入ってます。

地味にハマったところ

Firebase console上でDynamic Linksを1つ追加しないと前述のドメインが分からない(自分が見逃していただけかもだけど)。
なので最初上記コード例の dynamicLinkDomain のドメインは [firebaseのプロジェクト名].app.goo.gl かな?と思って試したら以下のようなエラー

{
    'error': {
        'code': 400, 
        'message': 'Request contains an invalid argument.', 
        'status': 'INVALID_ARGUMENT'
    }
}

どこが間違っているか分からず消耗してしまいました。

まぁ、他の人は詰まらない部分かもしれませんが自分はうっかり悩んでしまいました。
誰かの一助になればと思って書きました。

以上です。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2