你如何从Facebook注册插件中获取更多信息?

时间:2011-01-27 06:37:24

标签: facebook-c#-sdk

这很简单但是,使用Facebook C#SDK如何检索注册插件所要求的其他信息?

我想检索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>

2 个答案:

答案 0 :(得分:0)

好的我是这个libray的新手,但看起来你不能检索这些值。我在Facebook.FacebookSignedRequest类中对Facebook.dll进行了一些更改。我在下面的代码片段中添加了最后6行代码,这些代码来自类的构造函数。底线创建了一个公共属性“Registration”,它上面的行将数据放在字段中。

 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);

答案 1 :(得分:0)

您可以使用最新版本的Facebook C#SDK从注册插件中检索其他信息。

只需在FacebookSignedRequest类上调用静态方法Parse,如下所示(使用您的app secret和签名请求):

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

现在,您将在DecodedSignedRequest中看到已签名请求中的所有数据,包括注册插件数据作为JSON对象。

相关问题