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

我一直在尝试向模拟器发送Toast通知。

我创建了Windows Phone 8.1应用程序,并将其与商店中的应用程序关联。

之后,我设法获取必须使用的访问令牌来调用通道URI。

当我尝试使用通道URI和访问令牌发送Toast Notification时,出现此错误。

Bearer error="invalid_request",error_description="Invalid token"这是我创建的php测试代码。

//GET ACCESS TOKEN

$tokenRequest = curl_init();

curl_setopt($tokenRequest, CURLOPT_URL, 'https://login.live.com/accesstoken.srf');

curl_setopt($tokenRequest, CURLOPT_HTTPHEADER, array(

'Content-Type: application/x-www-form-urlencoded'

));

//FIELDS

$fields = array(

'grant_type' => '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);任何想法可能会导致这个问题?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值