.net-exeption中使用firebase admin SDK验证令牌:“ $ ID令牌中的段数不正确。”

时间:2019-07-16 12:17:05

标签: c# firebase firebase-authentication firebase-admin

我正在构建一个Web.API,以通过Firebase向iOS应用程序发送通知。我已经将Firebase管理SDK集成到了.net项目中。根据{{​​3}},我实现了以下代码。但是,当我调用“ VerifyIdTokenAsync”时,出现错误。错误是“ $ ID令牌中的段数不正确。”

 var defaultApp = FirebaseApp.Create(new AppOptions()
            {
                Credential = GoogleCredential.FromFile(strFilePath),
            });

            // Retrieve services by passing the defaultApp variable...
            var defaultAuth = FirebaseAuth.GetAuth(defaultApp);

            FirebasVerifyIdTokenAsynceToken decodedToken = await defaultAuth.(deviceToken);
            string uid = decodedToken.Uid;

我在线检查了几个帖子和文档,但是都引用相同的代码,没有更多的故障排除信息。请帮忙。

2 个答案:

答案 0 :(得分:1)

ID令牌(这是JWT的一种)必须完全具有3个段,并用句点分隔:const a = { b: { c: 'Hi!' } }; const { b: formerB, b: { c } } = a; console.log(formerB) console.log(c);。上面的错误消息是说,您作为ID令牌传递的字符串还有其他一些段数。因此,您输入的字符串根本不是ID令牌。

答案 1 :(得分:0)

谢谢Hiranya Jayathilaka。你是对的。我使用的是APNS令牌,而不是注册令牌ID。我跟随this article来获取注册令牌ID。 我们需要发布请求以

https://iid.googleapis.com/iid/v1:batchImport

将标题设置为

  

Content-Type:应用程序/ json授权:key = YOUR_SERVER_KEY

主体将包含以下内容

  

{       “应用程序”:YOUR_APPLICATION_BUNDLE_ID,       “沙箱”:false,       “ apns_tokens”:[           YOUR_APNS_TOKEN,           ]}

此外,当您致电 https://fcm.googleapis.com/fcm/send 并且您要将推送通知发送到单个设备,则应使用以下JSON

string json = "{\"to\": \"" + regID + "\",\"notification\": {\"title\": \"New deal\",\"body\": \"20% deal!\"},\"priority\":10}";

如果您要将推送通知发送到多个设备,请使用以下JSON

string json = "{\"registration_ids\": [\"" + regID1 + "\", \"" + regID2 + "\" \"" + regIDN + "\"],\"notification\": {\"title\": \"New deal\",\"body\": \"20% deal!\"},\"priority\":10}";

最后,我的手机上有推送通知!