你好,我是C++ QA小组的Andy Rich。 以前 ,我向你展示了如何使用 C++ REST API 连接到实时服务,但这只是可以使用restapi的众多web服务之一。 在这篇博文中,我将引导您创建一个windows8商店应用程序,该应用程序将用户登录到Facebook,并下载和显示他们的相册。
设置Facebook开发者帐户
为了开发Facebook的应用程序,你需要有一个真实的Facebook帐户,并注册成为他们平台上的开发者,你可以通过访问 http://developers.facebook.com .
一旦您注册为开发人员,您需要通过单击顶部栏中的“应用程序”并选择“创建新应用程序”来创建应用程序标识。 给你的应用程序起个名字,但是现在不要担心设置任何其他参数。 单击“保存更改”,您的应用程序将被创建。
你还应该将你的应用程序设置为“桌面”应用程序,这将减少你的用户需要登录的频率。 为此,请在应用程序设置下选择“高级”,将应用程序类型更改为“本机/桌面”,并将“客户端中的应用程序机密”设置为“否”,然后单击“保存更改”按钮。
最后,转到“基本设置”页,记下应用程序的app ID/API密钥(后称为
为了这篇文章的目的,我们将创建一个抽象来处理与Facebook的通信,一个Facebooku客户端类:
//脸谱网.h
#布拉格马 一旦
#包括 <字符串>
#包括
#包括
班 facebooku客户端 {
公众的 :
静止的 facebooku客户端 &实例(); //单子
pplx:: 任务 < 无效 >登录(标准: 垫圈 范围);
pplx:: 任务
web::http:: uriu生成器 基本uri( 布尔 绝对= 假 );
私有的 :
facebooku客户端():
原始客户(L) “https://graph.facebook.com/” ),
已登录( 假 ) {}
pplx:: 任务 < 无效 >完全登录(标准: 垫圈 范围);
标准: 垫圈 代币;
布尔 签到;
web::http::客户端:: httpU客户端 原始客户机;
};
因为我们的应用程序只需要这个类的一个实例,所以我们采用了singleton模式,并将构造函数设置为私有的。 这确保了客户端可以从任何地方访问,并且客户端的多个实例不会通过我们的应用程序激增。
下面几节将介绍这个类的实现。 以下各节中的代码假定实现文件具有以下using声明:
使用 命名空间 pplx;
使用 命名空间 网状物;
使用 命名空间 平台;
使用 命名空间 Windows::基础;
使用 命名空间 Windows::Security::Authentication::Web;
使用 命名空间 Windows::存储;
instance()方法的实现使用 梅耶氏单胞胎 :
facebooku客户端 & facebooku客户端 ::实例()
{
静止的 facebooku客户端 c类;
返回 c类;
}
登录Facebook
像许多流行的服务一样,Facebook使用 OAuth公司 执行用户登录。 对于Windows应用商店应用程序,开发人员应该使用 WebAuthenticationBroker 协商OAuth登录。 此API提供了一个可信任的对话框,供用户同意将应用程序连接到授权服务,该服务在所有Windows应用商店应用程序中都是一致的。 此对话框将引导通过Facebook的 桌面应用程序登录 .
以下代码将为用户提供一个登录Facebook的对话框:
pplx:: 任务 < 无效 > facebooku客户端 *完全登录(std:: 垫圈 范围 )
{
http:: uriu生成器 登录uri(L) “https://www.facebook.com/dialog/oauth” );
登录 uri。附加查询(L) “客户端id” ,左 “
登录 uri。附加查询(L) “重定向u uri” ,左 “https://www.facebook.com/connect/login_success.html” );
登录 uri。附加查询(L) “范围” , 范围 );
登录 uri。附加查询(L) “显示” ,左 “弹出窗口” );