Windows通知服务:401尝试在PHP中创建Toast通知时无效令牌

我一直在尝试向模拟器发送Toast通知。 我创建了Windows Phone 8.1应用程序并将其与商店中的应用程序相关联。 之后我设法获得了我必须用来调用通道URI的访问令牌。

当我尝试使用通道URI和访问令牌发送Toast通知时,我收到此错误。

Bearer error="invalid_request",error_description="Invalid token" 

这是我创建的php测试代码。

  'client_credentials', 'client_id' => '0', 'client_secret' => 'Q', 'scope' => 'notify.windows.com' ); $fields_string = ""; foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } rtrim($fields_string, '&'); curl_setopt($tokenRequest, CURLOPT_RETURNTRANSFER, true); curl_setopt($tokenRequest,CURLOPT_POST, count($fields)); curl_setopt($tokenRequest,CURLOPT_POSTFIELDS, $fields_string); $output = json_decode(curl_exec($tokenRequest)); curl_close($tokenRequest); echo "
"; var_dump($output); echo "
"; $accessToken = $output->{'access_token'}; //SEND PUSH $sendPush = curl_init(); curl_setopt($sendPush, CURLOPT_URL, 'https://db3.notify.windows.com/?token=AwYAAABuWLaYT1f9BVJwNJCjc243U1OFXUT8MCqvsME%2ftDnhPG%2f%2fJSurxP3u1y47eqmrQZSPUlZH7koHW3Zwdj5938LYZNRdDyE6JzvyHOZvZvSo%3d'); //TOAST MESSAGE $toastMessage = "" . "" . "" . "SendToast" . "" . "" . "Text Message" . "" . " " . ""; curl_setopt($sendPush, CURLOPT_HEADER, true); $headers = array('Content-Type: text/xml', "Content-Length: " . strlen($toastMessage), "X-WNS-Type: wns/toast", "Authorization: Bearer $accessToken"); curl_setopt($sendPush, CURLOPT_HTTPHEADER, $headers); curl_setopt($sendPush, CURLOPT_RETURNTRANSFER, true); curl_setopt($sendPush,CURLOPT_POST, 1); curl_setopt($sendPush, CURLOPT_POSTFIELDS, $toastMessage); $output = curl_exec($sendPush); echo "
"; var_dump(curl_getinfo($sendPush, CURLINFO_HTTP_CODE)); echo "
"; var_dump(curl_getinfo($sendPush, CURLINFO_HEADER_OUT)); echo "
"; var_dump($output); curl_close($sendPush); // Create request to send ?>

在c#中我使用它来获取通道URI。

  channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); Debug.WriteLine(channel.Uri); 

知道什么可能导致这个问题吗?

我找到了解决方案。

您必须发送以请求令牌的client_id不是您应用的客户端ID。 您必须发送包SID,而不是发送客户端ID。 很混乱。