1

私はserveracceskeyで取得した私のaccess_tokenに問題があります。ここでNodeJSで私のコードです:Firebase Dynamic Link Analytics Rest API(NodeJS)の正しいアクセストークンを取得する方法

const admin = require('firebase-admin'); 
var request = require("request"); 
const serviceAccount = require('./serverAccountKey.json'); 
const credential = admin.credential.cert(serviceAccount); 

    credential.getAccessToken().then((accessTokenInfo) => { 
    const accessToken = accessTokenInfo.access_token; 
    const expirationTime = accessTokenInfo.expires_in; 
    console.log("accessToken " + accessToken); 
    console.log("expirationTime " +expirationTime); 

    var s = "Bearer " + accessToken; 
    request({ 
    headers:{ 
     'Authorization': s 
    }, 
    uri:"https://firebasedynamiclinks.googleapis.com/v1/SHORTLINK/linkStats?durationDays=7", 
    method: "GET", 

    }, function(error, response, body) { 
     console.log(body); 
    }); 
}); 

は、結果は以下のようなものです:私が間違っているのは何

{ 
    "error": { 
     "code": 403, 
     "message": "Request had insufficient authentication scopes.", 
     "status": "PERMISSION_DENIED" 
    } 
} 

?私も郵便配達でリンクをテストします。何かが間違っている、私はすべての火器ベースのレストAPIドキュメントを読んだ。

+0

これは重大なバグですが、firebaseチームはこれを修正する必要があります。 Firebaseのダイナミックリンクは、分析を実行できない場合は役に立たない。通常の短縮URLとの違いは何ですか?あなたの応答に感謝します。 – faruk

答えて

1

管理SDKには、スコープの特定のセットにトークンを作成します。

https://github.com/firebase/firebase-admin-node/blob/master/src/auth/credential.ts#L272は明らかに、ダイナミックリンクAPIは、トークン内の追加のOAuth2スコープが必要です。このユースケースでは、いくつかのOAuth2ライブラリを使用する方がよいでしょう。 JavaやPythonを使用している場合、Google Cloudはこれを処理するライブラリを提供しています。

+0

あなたがaccess_tokenのために述べたように、スコープが必要ですが、私はそれらの1つを入れますが、私はまだ同じエラーが発生します。私はこのドキュメントを多く読んでいます(https://firebase.google.com/docs/reference/dynamic-links/analytics)。アナリティクスの対応にどのスコープが最適かを知る必要があります。 –

+0

サンプルコード/ドキュメントを改善するために内部問題をオープンしました。 –

+0

私は知っていますが、この問題のコンポーネントを見つけることができません。問題を作成することはできません.Firebaseコンポーネントでは、問題を作成する権限がありません。 –

関連する問題