FCM无效管理



我开发了一个使用FCM REST API发送通知的应用程序。但是,当我发送通知时,我总是会遇到相同的错误InvalidRegistration。当我谷歌搜索问题时,我知道问题是在注册令牌格式中。因此,我想确保我是否要发送正确的令牌。我要做的是对用户进行身份验证,验证请求返回。

{
    "kind": "identitytoolkit#VerifyPasswordResponse",
    "localId": "sQFWGMTlRvd8XgbxC9T6UyyKKNW2",
    "email": "01026525200@zeal.com",
    "displayName": "",
    "idToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjljYjU0Zjc4OTczNTU4NjU5ZTMxNGFkYzhjMTRkYzVmNjUyMTZmZmQifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vemVhbC1kZXYiLCJhdWQiOiJ6ZWFsLWRldiIsImF1dGhfdGltZSI6MTQ5ODI5ODUxNywidXNlcl9pZCI6InNRRldHTVRsUnZkOFhnYnhDOVQ2VXl5S0tOVzIiLCJzdWIiOiJzUUZXR01UbFJ2ZDhYZ2J4QzlUNlV5eUtLTlcyIiwiaWF0IjoxNDk4Mjk4NTE3LCJleHAiOjE0OTgzMDIxMTcsImVtYWlsIjoiMDEwMjY1MjUyMDBAemVhbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImZpcmViYXNlIjp7ImlkZW50aXRpZXMiOnsiZW1haWwiOlsiMDEwMjY1MjUyMDBAemVhbC5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJwYXNzd29yZCJ9fQ.Uuuy7566wziSjp001WD_OwG2OdrsggwbuftCnsdpKTicVKArdayEVGq4-pBNsQOZKYNrhpTmiv86d_lbGeeuu9LNJX0xwjvslGA2EffdS1Vaf_OaBrwlp9rllTdXsIEp5wSpPUX_jSa2dck0lpU5bNPVAPjfw6_q4kmKkf6pMzjKLogGvJmtRJOuA5LMFIbJGrs57QIJfbDbghvG-etYAorgRIXwM1Xfg2eYD5s7sItwv0h9hitkH2R_Fy1yJuml51nbA6GT93YyE05QYowfmrymbfYOCYtOsfdkdL6iU0CLH8I0Cw7sQhGIx1iuQl1Wv5aNN2Z4QAiKERpt2VJ_Hw",
    "registered": true,
    "refreshToken": "ACXxpGEB6dkyDsmRVkaXrTshqAhQPZCSVC8kofhypeWDP473zIIOZQpAF_cMEQP6CaOB2PnyDiYX3cJdYAcG2Wcpyzcpij3s2TauyiaKqfYTy76EtvHDGZrW-FyHXc9fX1sRZWbW4uhslrEZ_tYy2axolmc7g3ZPfWAidqHjEjIzqS2moJTM5lXuvxBRlpZQcNXQFOGtr8E8",
    "expiresIn": "3600"
}

因此,我使用idToken发送通知。是对还是我做错了什么。

您使用的idToken似乎不是FCM的有效注册令牌,因此InvalidRegistration错误。

您提到该值(idToken(来自身份验证后的响应,这可能是它的意思。据我所知,它通常只是在特定间隔(expiresIn(之后确定会话并过期。

对于FCM,所需值作为目标是通过调用getToken从客户端生成的实际令牌。从文档中:

检索当前注册令牌

当您需要检索当前令牌时,请致电GetToken。尚未授予许可后,此方法将返回null。否则,它将返回令牌或由于错误而拒绝承诺。

  // Get Instance ID token. Initially this makes a network call, once retrieved
  // subsequent calls to getToken will return from cache.
  messaging.getToken()
  .then(function(currentToken) {
    if (currentToken) {
      sendTokenToServer(currentToken);
      updateUIForPushEnabled(currentToken);
    } else {
      // Show permission request.
      console.log('No Instance ID token available. Request permission to generate one.');
      // Show permission UI.
      updateUIForPushPermissionRequired();
      setTokenSentToServer(false);
    }
  })
  .catch(function(err) {
    console.log('An error occurred while retrieving token. ', err);
    showToken('Error retrieving Instance ID token. ', err);
    setTokenSentToServer(false);
  });
}

生成的令牌通常以:

的形式出现
 <InstanceID>:<Actual token>

例如:

 abcd1234:abcdefg123456

仔细检查您是否实际上是生成令牌的正确方法。

我也遇到了这个问题。问题是我的设备令牌长度在数据库表中的长度。当我将其更改为255时,它可以正常工作。

相关内容

  • 没有找到相关文章

最新更新