这已经很简单了,但是,使用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>发布于 2011-01-28 10:22:43
好吧,我是这个库的新手,但是看起来你不能检索这些值。我对Facebook.dll做了一些更改,特别是在Facebook.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);发布于 2011-03-10 22:06:47
您可以使用最新版本的Facebook C# SDK从注册插件中检索附加信息。
只需在FacebookSignedRequest类上调用静态方法Parse,如下所示(使用您的应用程序密钥和签名的请求):
var DecodedSignedRequest = FacebookSignedRequest.Parse(FacebookContext.Current.AppSecret, SignedRequest);现在,您将在DecodedSignedRequest中看到来自签名请求的所有数据,包括注册插件数据。
https://stackoverflow.com/questions/4813456
复制相似问题