我在https://developers.google.com/instance-id/reference/server#get_information_about_app_instances找到了以下示例GET请求:
https://iid.googleapis.com/iid/info/nKctODamlM4:CKrh_PC8kIb7O...clJONHoA?details=trueAuthorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
该示例中的关键是:AIzaSyZ-1u...0GBYzPu7Udno5aA
。我在哪里可以找到我的密钥,我应该在我的GET请求中使用的密钥?我试图在https://console.developers.google.com/apis/credentials找到它,这就是我所看到的:
我尝试使用您在上图中看到的所有四个键,我总是从浏览器收到此消息:
{"error":"MissingAuthorization"}
此错误是指错误的键还是其他错误?我在正确的位置寻找钥匙吗?谢谢。
编辑1:我在How to check how many topics has been subscribed?处查看了问题,并且还尝试使用我在Firebase控制台中找到的密钥,位于“云消息传递”选项卡下。这就是我所看到的:
我在上图中使用了这些键尝试了GET请求,但我仍然看到同样的错误:{"error":"MissingAuthorization"}
。
编辑2:我在命令行中使用它:
C:\curl>curl -k https://iid.googleapis.com/iid/info/nKctODamlM4:CKrh_PC8kIb7O...clJONHoA?details=trueAuthorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
{"error":"MissingAuthorization"}
C:\curl>
请注意我是如何在“示例GET请求”标题下复制/粘贴我在https://developers.google.com/instance-id/reference/server#get_information_about_app_instances找到的内容。我甚至没有尝试使用自己的密钥,我看到同样的错误:{"error":"MissingAuthorization"}
。这是否意味着问题在于我使用的密钥?这不是我在Firebase控制台中看到的吗?
答案 0 :(得分:0)
根据https://developers.google.com/instance-id/reference/server上的说明,在“获取有关应用实例的信息”标题下,它显示有必要提供标头中设置的Authorization: key=YOUR_API_KEY
。请参阅https://android.jlelse.eu/firebase-push-notification-using-curl-command-devoid-backend-e63795d282c4示例,了解如何在标题中提供参数。
关于必须使用的Authorization: key=YOUR_API_KEY
,它是此问题的“编辑1”部分中出现的关键。我使用的是Server key
,而不是Legacy server key
,它对我有用。
https://developers.google.com/instance-id/reference/server显示了此终点:https://iid.googleapis.com/iid/info/IID_TOKEN
。但IID_TOKEN
必须替换为实例ID令牌,该令牌对应于设备上安装的应用程序实例。就我而言,我通过在Android应用的第一个活动中使用以下代码打印设备的实例ID或令牌来找到它:
Log.d("The token of device: ", FirebaseInstanceId.getInstance().getToken());
在Android监视器的日志中,我找到了我需要的IID_TOKEN
:
D/The token of device:: f35EFw4bsef:QWE34bFm56ZuQLWYSDDgPlkf4a88Lu6Gp4DoXVDJ5dRIlsdDncq0UdNnlDi7wxbbut6YX7Z1kwgyS3bzk_Zrl-1doHCf9XFdOXTThNzo4sDFEWqQjHKfNa3uH2Js4Flbf_CnRkD2Mftr
最后,我在命令提示符下使用了cURL,你可以看到我是如何正确获得结果的:
C:\curl>curl -X GET -k --header "Authorization: key=AAAAJ5XteYp:DKE32aIdFalyFXku6A-eR_wHL6ZBUFxfyPtcrm3wwF2l-nPEv_vAeYqo3NJzaIKKcSSow6gqoAwf3cBEm8QWYbF6w-asW0SX0RmHZftQglwmo_ziwrk8wFcGp1_DOQ1PLFFgP4BFWXAD" "https://iid.googleapis.com/iid/info/f35EFw4bsef:QWE34bFm56ZuQLWYSDDgPlkf4a88Lu6Gp4DoXVDJ5dRIlsdDncq0UdNnlDi7wxbbut6YX7Z1kwgyS3bzk_Zrl-1doHCf9XFdOXTThNzo4sDFEWqQjHKfNa3uH2Js4Flbf_CnRkD2Mftr
{"applicationVersion":"22","attestStatus":"NOT_ROOTED","application":"com.[myapp]","scope":"*","authorizedEntity":"232255245625","appSigner":"3d34g3fs3443292d825f21da4fdd5b34a56f2a3h","platform":"ANDROID"}
C:\curl>
注意:在上面的代码中,为了隐私目的,我更改了令牌和密钥之类的值,但是您需要使用您的值,一切都应该有效。