2011-01-27 79 views
0

這很容易,但是,使用Facebook C#SDK如何檢索註冊插件請求的附加信息?你如何從Facebook註冊插件中刪除更多信息?

我想檢索Favourite_animal值。

這是插件的Java腳本。

<script> 
     FB.init({ 
      appId: '123123123123123', cookie: true, 
      status: true, xfbml: true 
     }); 
    </script> 
    <fb:registration 
     fields="[{'name':'name'}, {'name':'email'}, 
     {'name':'Favourite_Animal','description':'What is your favourite animal?', 
     'type':'text'}]" redirect-uri="http://XXXXXX.com/FacebookAuth2/Account/Home"> 
</fb:registration> 

回答

0

好,我是新來這個libray,但它並不像你可以檢索這些值。我在Facebook中特意修改了Facebook.dll .FacebookSignedRequest類我在下面的代碼片段中添加了最後6行代碼,這些代碼片段來自類的構造函數。最後一行創建一個公共屬性「註冊」,上面的行將數據放在該字段中。

public FacebookSignedRequest(IDictionary<string, object> value) 
    { 
     this.UserId = value.ContainsKey("user_id") ? (string)value["user_id"] : null; 
     this.AccessToken = value.ContainsKey("oauth_token") ? (string)value["oauth_token"] : null; 
     this.Expires = value.ContainsKey("expires") ? DateTimeConvertor.FromUnixTime(Convert.ToInt64(value["expires"])) : DateTime.MinValue; 
     this.IssuedAt = value.ContainsKey("issued_at") ? DateTimeConvertor.FromUnixTime(Convert.ToInt64(value["issued_at"])) : DateTime.MinValue; 
     this.ProfileId = value.ContainsKey("profile_id") ? (string)value["profile_id"] : null; 
     this.Algorithm = value.ContainsKey("algorithm") ? (string)value["algorithm"] : null; 

     if (value.ContainsKey("user")) 
     { 
      var user = (IDictionary<string, object>)value["user"]; 
      this.User = new FacebookSignedRequestUser 
      { 
       Country = value.ContainsKey("country") ? (string)user["country"] : null, 
       Locale = value.ContainsKey("locale") ? (string)user["locale"] : null, 
      }; 
     } 

     if (value.ContainsKey("registration")) 
     { 
      this.Registration = (IDictionary<string, object>)value["registration"]; 
     } 

    } 
    /// <summary> 
    /// Gets or sets th key value pairs from the Registration plugin input fields. Accessibile even if user chooses not to use Facebook for registration 
    /// </summary> 
    public IDictionary<string, object> Registration { get; set; } 

現在什麼領域我添加到註冊插件我可以通過名稱訪問。希望這會幫助其他人。隨意發佈一個更好的主意。

FacebookApp app = new FacebookApp(); 

     Authorizer authorizer = new Authorizer(app); 
     if (authorizer.Authorize()) 
     { 
      object returnValue; 
      app.SignedRequest.Registration.TryGetValue("Fovourite_Animal", out returnValue); 
0

您可以使用最新版本的Facebook C#SDK從註冊插件中檢索附加信息。

只需撥打如下圖所示的FacebookSignedRequest類的靜態方法解析(與你的應用程序的祕密,和簽名的請求):

var DecodedSignedRequest = FacebookSignedRequest.Parse(FacebookContext.Current.AppSecret, SignedRequest); 

現在你會看到所有的數據從簽名的請求中DecodedSignedRequest,包括註冊插件數據作爲JSON對象。