开发Facebook Application (二)

        现在我们开始开发Facebook Application, 要开发一个可以在Facebook平台上运行的Application, 那就必须能够与Facebook进行一些数据交换, 如获取身份, Session处理等, Facebook本身提供了很多API供用户使用, 具体可参考http://wiki.developers.facebook.com/index.php/API. 只是这些API比较复杂, 使用起来有点难度. 现在网上有很多比较好的第三方控件, 这些控件对这些API进行了处理和封装, 可以很方便的进行Facebook数据处理. 目前针对.NET环境下开发Facebook Application比较好的第三方控件主要有两个: Facebook Developer Toolkit和Facebook.NET, 前者是将API封装到类库中, 并针对不同模式的Application提供了对应的Base Page, 当用户开发的页面继承了这些Base Page后, 就可以使用这些API了, 而后者是提供了一个用户控件, 只要在页面上放置了该控件, 并设置了Application的API Key和Secret, 就可以使用该控件提供的方法进行Facebook API操作了. 这两个控件都是开源的, 大家可以从以下地址下载使用:

        Facebook Developer Toolkit: http://www.codeplex.com/FacebookToolkit

        Facebook.NET: http://www.codeplex.com/FacebookNET

相比较而言, Facebook.NET的使用比较简单方便一些, 所以我选择它作为项目的开发用第三方控件.

        我的开发环境是VS 2005, 开发语言是C#.NET, 现在我们正式开始开发过程. 首先, 我们新建一个Website项目, 引用下载到的Facebook.NET的DLL, 并将Facebook.NET提供的用户控件添加到工具箱中.

        添加用户控件的方法: 打开工具箱, 在工具箱的空白区域点击鼠标右键, 选择弹出菜单中的"选择项...", 在弹出窗口中点击窗口下半部分的浏览按钮, 选择FacebookNET.Web.dll, 并点击确定按钮完成添加过程.

        添加完用户控件后, 工具箱中会增加三个控件, 分别是FacebookApplication, FacebookHyperLink和FqlDataSource.

       

        1. FacebookApplication: 这是Facebook.NET的核心控件, 所有Facebook的API操作都包含在内;

        2. FacebookHyperLink: 这是控件是ASP.NET中HyperLink控件的扩展, 在项目中如果需要在页面上使用导航功能, 请务必使用此控件或直接使用脚本, 如果使用Menu, HyperLink等原ASP.NET的控件, 页面跳转后Session将丢失;

        3. FqlDataSource: 类似与ASP.NET中的DataSource控件.

         现在我们选择FacebookApplication控件, 并将其拖动到需要的页面上, 并设置其中的一些属性, 其中API Key和Secret是必须的, 而且值必须与之前获得的Application的值相同.

<% @ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"  %>

<% @ Register Assembly="FacebookNET.Web" Namespace="Facebook.Web" TagPrefix="fb"  %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  runat ="server" >
    
< title > Untitled Page </ title >
</ head >
< body >
    
< form  id ="form1"  runat ="server" >
    
< div >
        
< fb:FacebookApplication  ID ="FacebookApplication1"  runat ="server"  ApplicationKey ="xxxxxxxx"  Secret ="eeeeeeee" >
        
</ fb:FacebookApplication >
    
    
</ div >
    
</ form >
</ body >
</ html >

        此时就可以在后台代码中使用该控件的方法了. 

public   partial   class  _Default : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!IsPostBack)
        
{
            Response.Write(FacebookApplication1.Service.UserID);
        }

    }

}

        这样虽然可以实现要求, 但是每一页都需要放置一个FacebookApplication控件, 而且当需要将项目更换到其他Application时, 还需要到页面上修改FacebookApplication的属性, 很是不便. 我们需要找到一个变通的方法.

        现在, 我们建立一个母版页, 将FacebookApplication控件放到该母版页上, 这样, 只要是使用该母版页的页面, 都不需要再次添加该控件了, 同时将需要设置的属性值放在web.config中, 在页面加载时动态加载其属性值, 这样在更换Application时, 只需要修改web.config就行了.

        母版页页面代码: 

<% @ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage"  %>
<% @ Register Assembly="FacebookNET.Web" Namespace="Facebook.Web" TagPrefix="fb"  %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  runat ="server" >
    
< title > Untitled Page </ title >
</ head >
< body >
    
< form  id ="form1"  runat ="server" >
    
< div >
        
< fb:FacebookApplication  ID ="fbTest"  runat ="server"  ApplicationKey ="dfdddddddd"
            Secret
="eeefasdfef" >
        
</ fb:FacebookApplication >
        
        
< asp:contentplaceholder  id ="ContentPlaceHolder1"  runat ="server" >
        
        
        
</ asp:contentplaceholder >
    
</ div >
    
</ form >
</ body >
</ html >

        web.config代码: 

< appSettings >
        
< add  key ="APIKey"  value ="ddfefdfdfsdf..." />
        
< add  key ="Secret"  value ="dafefsdfadg..." />
</ appSettings >

        页面动态加载FacebookApplication参数的操作我们放在OnPreInit的重载方法里进行, 为方便起见, 我们建立一个BasePage, 以免每个页面都要写一遍代码:

        BasePage.cs:

using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;
using  Facebook.Web;

public   abstract   class  BasePage : System.Web.UI.Page
{
    
public BasePage()
    
{
        
//
        
// TODO: Add constructor logic here
        
//
    }


    
protected FacebookApplication CurrentApplication
    
{
        
get
        
{
            
return Master.FindControl("fbTest"as FacebookApplication;
        }

    }


    
protected override void OnPreInit(EventArgs e)
    
{
        
        CurrentApplication.ApplicationKey 
= System.Configuration.ConfigurationSettings.AppSettings["ApiKey"];
        CurrentApplication.Secret 
= System.Configuration.ConfigurationSettings.AppSettings["Secret"];
        
    }

}

        如此, 只需将使用母版页的页面继承BasePage, 就可以方便的使用FacebookApplication的功能了.

public   partial   class  Default3 : BasePage
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!IsPostBack)
        
{
            Response.Write(CurrentApplication.Service.UserID);
        }

    }

}

        只要按照正常的ASP.NET项目的开发步骤, 同时在需要与Facebook交互的地方使用上述的方法进行处理, 就可以开发出简单的, IFrame模式的Facebook Application了.

(待续...)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值