首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Facebook注册插件中检索其他信息?

如何从Facebook注册插件中检索其他信息?
EN

Stack Overflow用户
提问于 2011-01-27 14:37:24
回答 2查看 678关注 0票数 0

这已经很简单了,但是,使用Facebook C# SDK,我如何检索注册插件所请求的附加信息?

我想检索Favourite_animal值。

这是该插件的Java脚本。

代码语言:javascript
复制
  <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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-28 10:22:43

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

代码语言:javascript
复制
 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; }

现在,我添加到注册插件中的任何字段都可以按名称访问。希望这能对其他人有所帮助。也请随意发布更好的想法。

代码语言:javascript
复制
FacebookApp app = new FacebookApp();

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

Stack Overflow用户

发布于 2011-03-10 22:06:47

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

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

代码语言:javascript
复制
var DecodedSignedRequest = FacebookSignedRequest.Parse(FacebookContext.Current.AppSecret, SignedRequest);

现在,您将在DecodedSignedRequest中看到来自签名请求的所有数据,包括注册插件数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4813456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档