所以,我使用泽西岛看到了这个问题。但是,仍然不知道如何将简单的推送通知从我的服务器发送到主题订阅的用户。我不明白我的请求中有什么问题,因为我试图根据他们的示例来构建。
public class OverSLANotifier {
public static void main(String[] args) throws Exception, FirebaseException {
String rawData = "{"to": "/topics/sla","data": {"message": "This is test push notification!",}}";
String encodedData = URLEncoder.encode(rawData, "UTF-8");
URL u = new URL("https://fcm.googleapis.com/fcm/send");
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Authorization", "key=AI<redacted>VGB6YwPWrinoz1YFBgdKv4Pgm8s");
conn.setRequestProperty("Content-Type", "application/json");
OutputStream os = conn.getOutputStream();
os.write(encodedData.getBytes());
System.out.println(""+ conn.getResponseCode() + "-->>"+conn.getResponseMessage());
}
如果我从控制台发送,我的客户端已正确设置,可以接收。
响应始终是:
401->>未经授权
您的json似乎无效:
{"to": "/topics/sla","data": {"message": "This is test push notification!",}}
vs
{"to": "/topics/sla","data": {"message": "This is test push notification!"}}
还检查文档:
用来发送消息的发件人帐户无法进行身份验证。 可能的原因是:
- 授权标题丢失或HTTP请求中的语法无效。
- 无效的项目编号作为密钥发送。
- 密钥有效,但禁用FCM服务。
- 请求起源于未白色的服务器在服务器密钥IP中。
来源
ps:在此处找到的文档中也无效;)