这很简单但是,使用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>
答案 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对象。