我正在构建一个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;
我在线检查了几个帖子和文档,但是都引用相同的代码,没有更多的故障排除信息。请帮忙。
答案 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}";
最后,我的手机上有推送通知!