如何使用 Windows 推送通知服务 (WNS) 进行验证(Windows 运行时应用)

12/11/2015

本文内容

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

本主题介绍如何通过 Windows 推送通知服务 (WNS) 对云服务器进行身份验证以及如何接收返回的访问令牌。

先决条件

说明

步骤 1: 使用仪表板注册应用

通过 WNS 发送通知之前,必须注册你的应用。可通过仪表板完成此操作,也可通过支持你提交、认证和管理 Windows 应用商店应用的开发人员门户完成此操作。通过仪表板注册应用时,你需要提供云服务将用来通过 WNS 对自身进行身份验证的凭据—程序包安全标识符 (SID) 和密钥—。

若要注册:

转到 Window 开发人员中心的 Windows 应用商店应用页面,并使用你的 Microsoft 帐户登录。

登录后,单击“仪表板”链接。

在“仪表板”上,选择“提交应用”****。

在“提交应用”页面,选择“应用名称”。****

为你的应用提供一个唯一名称。输入名称并单击“保留名称”按钮。如果该名称可用,将为你的应用保留它。为你的应用成功保留名称后,其他详细信息变为可供修改的状态(如果你选择在此时进行该操作)。

步骤 2: 获取应用的标识值

当你保留应用的名称时,Windows 应用商店创建关联的凭据,它还分配应用的清单文件 (package.appxmanifest) 中必须存在的相关标识值—名称和发布者—。如果已将应用上载到 Windows 应用商店,则这些值将自动添加到清单中。如果未上载应用,则将需要将标识值手动添加到清单中。

选择服务链接。

在“服务”页面上,选择“Microsoft Azure 移动服务”****部分下的“Live 服务”链接。

在推送通知和 Live Connect 服务信息页面上,选择标识应用。

标识应用页面提供了一个要包含在应用的清单中的 identity 元素。在文本编辑器中打开你的清单,根据页面提示添加该元素。

步骤 3: 获取应用的凭据

单击相同的标识应用页面底部的验证你的服务链接。

验证你的服务页面提供了你的安全标识符和客户端密钥,如下所示。若要向此应用发送推送通知,云服务必须正确使用这些凭据。不能使用其他云服务的凭据向此应用发送通知,并且不能使用这些凭据向其他应用发送通知。

注意  此页面还可以用于生成新凭据。

将 SID 和客户端密钥上载到云服务器。

要点  SID 和客户端密钥应该由云服务进行安全存储和访问。泄露此信息或者此信息被盗都可能使攻击者在没有你的允许或者你不知道的情况下向你的用户发送通知。

步骤 4: 向 WNS 发送云服务器的凭据

云服务通过一个使用“application/x-www-for-urlencoded”格式的 HTTPS 身份验证请求提供它的凭据(SID 和客户端密钥)。

本示例显示一个示例 HTTPS 身份验证请求。包括 grant_type 中的程序包 SID 和密钥。确保在 "client_id" 字段中替换你自己的程序包 SID,并且在 "client_secret" 字段中提供你自己的密钥(如果复制此代码)。有关语法信息,请参阅推送通知服务请求和响应头。

POST /accesstoken.srf HTTP/1.1

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

Host: https://login.live.com

Content-Length: 211

grant_type=client_credentials&client_id=ms-app%3a%2f%2fS-1-15-2-2972962901-2322836549-3722629029-1345238579-3987825745-2155616079-650196962&client_secret=Vex8L9WOFZuj95euaLrvSH7XyoDhLJc7&scope=notify.windows.com

WNS 随即向你的服务器发送对身份验证请求的响应。如果响应代码为“200 OK”,则身份验证成功,响应包含一个访问令牌,云服务器必须保存这个令牌,并且用在它发送的任何通知中,直到该访问令牌过期。

此处显示一次成功身份验证的 WNS 回复示例。

HTTP/1.1 200 OK

Cache-Control: no-store

Content-Length: 422

Content-Type: application/json

{

"access_token":"EgAcAQMAAAAALYAAY/c+Huwi3Fv4Ck10UrKNmtxRO6Njk2MgA=",

"token_type":"bearer"

}

下面的示例提供了发送身份验证请求和接收回复所需的代码。可将这个示例直接复制到你自己的云服务器代码中,只要你的代码包含以下指令:

using System.Runtime.Serialization.Json;

using System.Runtime.Serialization;

using System.IO;

[DataContract]

public class OAuthToken

{

[DataMember(Name = "access_token")]

public string AccessToken { get; set; }

[DataMember(Name = "token_type")]

public string TokenType { get; set; }

}

private OAuthToken GetOAuthTokenFromJson(string jsonString)

{

using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(jsonString)))

{

var ser = new DataContractJsonSerializer(typeof(OAuthToken));

var oAuthToken = (OAuthToken)ser.ReadObject(ms);

return oAuthToken;

}

}

protected OAuthToken GetAccessToken(string secret, string sid)

{

var urlEncodedSecret = HttpUtility.UrlEncode(secret);

var urlEncodedSid = HttpUtility.UrlEncode(sid);

var body =

String.Format("grant_type=client_credentials&client_id={0}&client_secret={1}&scope=notify.windows.com", urlEncodedSid, urlEncodedSecret);

string response;

using (var client = new WebClient())

{

client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");

response = client.UploadString("https://login.live.com/accesstoken.srf", body);

}

return GetOAuthTokenFromJson(response);

}

相关主题

wns服务器没有响应,如何使用 Windows 推送通知服务 (WNS) 进行验证(Windows 运行时应用)...相关推荐

  1. Windows Phone 7 不温不火学习之《推送通知服务》

    Windows Phone 中的 Microsoft Push Notification Service 向第三方开发人员提供了一个弹性,专注,而且持续的渠道,使得开发人员可以从Web Service ...

  2. 推送通知服务【WP7学习札记之十三】

    为什么使用推送通知服务 Windows Phone执行模型决定只有一个第三方的应用程序可以在前台运行,应用程序不能再后台运行,不断的往Cloud拉数据.微软提供推送通知服务(Push Notifica ...

  3. go gorilla_使用gorilla websocket构建浏览器推送通知服务的低级设计

    go gorilla Singhania AdityaSinghania Aditya Follow跟随 Aug 31 8月31 gopher leaving everyone awestruck w ...

  4. Apple推送通知服务教程

    Apple推送通知服务教程 生成APP ID和SSL证书 登录iOS Provisioning Portal页面 首先,我们将要新建一个App ID. 每一个推送APP都需要一个唯一的对应的App I ...

  5. APPLE推送通知服务教程 PART-2

    原文地址:http://www.ityran.com/archives/281 本文由泰然翻译组出品,转载请注明出处! 翻译人员:jesse,TXX_糖炒小虾,无敌葫芦娃 校对:Iven 生成APP ...

  6. android自定义push通知_20个海外Web和App推送通知服务工具

    在App和网站中使用推送通知有不同的原因,并且在提高流量和与客户互动方面有很多好处.推送通知是一种交互式可点击消息,可将访问者直接引导至你的网站.它们可以帮助你以指数方式增加流量和参与率.因此,营销人 ...

  7. 苹果推送通知服务(APNs)编程(转)详细步骤

    iPhone 对于应用程序在后台运行有诸多限制(除非你越狱).因此,当用户切换到其他程序后,原先的程序无法保持运行状态.对于那些需要保持持续连接状态的应用程序(比如社区网络应用),将不能收到实时的信息 ...

  8. 20个海外Web和App推送通知服务工具(一)

    在App和网站中使用推送通知有不同的原因,并且在提高流量和与客户互动方面有很多好处.推送通知是一种交互式可点击消息,可将访问者直接引导至你的网站.它们可以帮助你以指数方式增加流量和参与率.因此,营销人 ...

  9. 【苹果推送Imessage Apple】摘要Apple推送通知服务更新

    苹果基于bug原因,停用了服务器端的SSL3.0连接方式.目前只支持TLS连接. 1. 如果推送的时候deviceToken对应的机器在APNS服务器上是离线状态,苹果会保存推送信息"一段时 ...

最新文章

  1. ncre计算机二级教程版本,计算机二级 NCRE教程word.pdf
  2. 181920.net用 文字存档
  3. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第10章-一阶多智能体系统非合作行为检测与隔离
  4. Apache Kafka 1.0.0正式发布!
  5. 大数据认知计算在内容安全管控中的应用
  6. python sum 数组原理_Python – Sum 4D数组
  7. android 6.0获取蓝牙权限
  8. python 运算符重载_Python中类的运算符重载
  9. php红色风格,PHP理财版PC+WAP安装包(红色风格+蓝色风格)
  10. 阿里巴巴官方最新Redis开发规范!
  11. 安卓手机与电脑无线传输文件(利用ftp服务)
  12. js实现城市拼音首字母排序
  13. 大一c语言大作业实验报告,大一c语言实验报告
  14. linux 安装redies
  15. 如何从Linux里面下载软件
  16. 系统启动过程(基于三星s5p6818 uboot)
  17. 转基因,请你走出这片净土。!!!食用转基因的人,你们伤不起~有木有,有木有啊~!!!!!!!!!!!!!!!
  18. [推荐]中国网管的知识宝库-网管之家
  19. 巧用防火墙端口来禁止迅雷、BT等软件
  20. [WPF] WPF浏览器程序:如何发布并解决不信任程序问题

热门文章

  1. java 代码效率_提高代码性能效率总结(一)--Java
  2. opencv 最大内接矩形_OpenCV之二值图像分析 – 寻找最大内接圆
  3. HAOI(十二省联考)2019 qwq记
  4. cyyz: Day 4 网络流整理
  5. 贝塞尔曲线初识 (数学)
  6. vb.net机房收费系统之组合查询
  7. ant中调用外部ant任务的两种方法
  8. 《白帽子讲web安全》学习笔记 (4)
  9. (最简单的)在VS中调用存储过程
  10. 【Linux】ubuntu 16 启动拨号上网