2011-06-06 49 views
1

我正在使用Facebook C#SDK(http://facebooksdk.codeplex.com/releases/view/66412),并想知道使用它来保留我的最佳方法缓存的用户数据是最新的?Facebook C#SDK更新计划

目前我储存这些作品的用户信息:

  • 用户ID
  • 生日
  • 国家
  • PIC
  • pic_square

有没有人给过这个任何想法或有使用SDK来保持其缓存最新的经验?如果是这样,怎么做ü架构解决方案...

[此外,响应时请通知我图形的API调用你发等,FB比较难懂与此数据]

问候 罗布

回答

0

使用Facebook订阅功能。这样,每次用户更改数据时,Facebook都会使用更改后的数据来ping您的网址。这是一个基于推送的通知。它允许您获取图形对象的实时更新。 https://developers.facebook.com/docs/reference/api/subscription/

如果您使用的是Web窗体,请实现FacebookSubscriptionsHttpHandler和FacebookSubscriptionVerifier。

对于MVC使用FacebookSubscriptionReceivedAttribute和FacebookSubscriptionVerifyAttribute

我会强烈建议你也看看FacebookSubscriptionsHttpHandler源代码http://facebooksdk.codeplex.com/SourceControl/changeset/view/08cb51f372b5#Source%2fFacebook.Web%2fFacebookSubscriptionsHttpHandler.cs

它包含关于如何使用它的XML注释。

这是一个3步过程。

  1. 取得Facebook应用程序访问令牌。
  2. 订阅订阅
  3. 接收和处理订阅
+0

嗨Prabir,你能给我如何使用FacebookSubscriptionReceivedAttribute和FacebookSubscriptionVerifyAttribute以一个简单的例子订阅用户姓名,出生日期和国家?我正在使用MVC谢谢! – 2011-08-15 08:31:58

1

下面是一个使用MVC3的范例:

public class SubscriptionController : Controller 
{ 
    private const string SubscriptionVerificationToken = "E5FB84E0-F425-445A-86C8-9FC598E79B1E"; 
    private const string CallbackUrl = "http://mysite.com/subscription/verify"; 

    public void Index() 
    { 
     FacebookClient fb = new FacebookClient(FacebookApplication.Current); 
     dynamic result = fb.Post(
      string.Format("/{0}/subscriptions", FacebookApplication.Current.AppId), new Dictionary<string, object> 
       { 
        { "object","user"}, 
        { "fields","friends" }, 
        {"callback_url", CallbackUrl }, 
        { "verify_token", SubscriptionVerificationToken } 
       }); 
    } 

    [HttpGet] 
    [FacebookSubscriptionVerify(SubscriptionVerificationToken)] 
    public void Verify(FacebookClient fb) 
    { 
     FacebookSubscriptionVerifiedResult verifiedResult = new FacebookSubscriptionVerifiedResult(); 
     verifiedResult.ExecuteResult(ControllerContext); 
    } 

    [HttpPost] 
    [FacebookSubscriptionReceived] 
    [ActionName("Verify")] 
    public void Receive() 
    { 
     //handle response 
    } 

}