2011-06-06 78 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 
    } 

}