问题描述
|
我正在使用C#4.0,并且正在集成Facebook注册插件
有人可以告诉我阅读签名后的请求该怎么做。
我已经下载了Facebook.dll和Newtonsoft.Json.dll
我也有有效
应用程式编号:***
API密钥:********
应用秘密:************
如果可能,请给我一个示例代码,我应如何传递这些键以及如何收集以签名请求形式发送的解码数据。
谢谢:
解决方法
以下是我所使用的,必须有更简单的方法来读取已签名的请求。只需几个步骤,即可读取C#中的Facebook签名请求
点网2010需要遵循以下步骤。建议您在完成后创建一个名为“ fb”的基于Web的新项目,然后将此代码导入到实际项目中。
从http://facebooksdk.codeplex.com/SourceControl/changeset/view/f8109846cba5#Source%2fFacebook%2fFacebookApp.cs下载源
解压缩后,您将在其中找到“ facebooksdk-f8109846cba5”,在该文件夹中将找到一个文件夹facebooksdk-f8109846cba5 \\ Source \\ Facebook,查找“ Facebook.csproj”
在2010年vs中打开“ Facebook.csproj”。查找文件“ FacebookApp.cs”,打开此文件并搜索“内部受保护的FacebookSignedRequest ParseSignedRequest(stringsignedRequestValue)”
将“内部保护”更改为“公共”
然后通过右键单击项目来构建项目。现在,已编译的文件(“ Facebook.dll”)可以使用了。将其复制到您的项目bin目录中,并添加其引用。
现在从http://json.codeplex.com/releases/view/50552下载Json.Net 3.5版本8,将其添加到项目bin文件夹中,并添加其引用。
现在您可以阅读已签名的请求。现在是时候编写代码来读取已签名的请求了。
using System;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using Facebook;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Serialization;
using System.Collections.Generic;
namespace fb
{
public partial class test3 : System.Web.UI.Page
{
protected void Page_Load(object sender,EventArgs e)
{
FacebookApp fap = new FacebookApp();
fap.AppId = \"************\";
fap.AppSecret = \"********************\";
string requested_Data = Request.Form[\"signed_request\"];
FacebookSignedRequest fsr = fap.ParseSignedRequest(requested_Data);
// string json = JsonConvert.SerializeObject(fsr.Dictionary,Formatting.Indented);
UserData ud = new UserData(fsr);
Response.Write(ud.name + \"
\");
Response.Write(ud.birthday + \"
\");
Response.Write(ud.country + \"
\");
Response.Write(ud.email + \"
\");
Response.Write(ud.gender + \"
\");
Response.Write(ud.location + \"
\");
Response.Write(ud.userId + \"
\");
}
}
public class UserData
{
public UserData(FacebookSignedRequest fsr)
{
string value = string.Empty;
JObject o;
foreach (string key in fsr.Dictionary.Keys)
{
value = fsr.Dictionary[key];
switch (key)
{
case \"user_id\":
userId = value;
break;
case \"registration\":
o = JObject.Parse(value);
name = GetValue(o,\"name\");
birthday = GetValue(o,\"birthday\");
email = GetValue(o,\"email\");
gender = GetValue(o,\"gender\");
location = GetValue(o,\"location.name\");
break;
case \"user\":
o = JObject.Parse(value);
country = GetValue(o,\"country\");
break;
}
}
}
private string GetValue(JObject o,string token)
{
string ret = string.Empty;
try
{
ret = (string)o.SelectToken(token);
}
catch (Exception ex)
{
throw ex;
}
return ret;
}
public string name { get; set; }
public string birthday { get; set; }
public string gender { get; set; }
public string location { get; set; }
public string country { get; set; }
public string email { get; set; }
public string userId { get; set; }
}
}
这就是我正在使用的并且对我来说很好。
,这是使用FB C#SDK v.5.2.1.0
var signed_request = Request.Form[\"signed_request\"];
var fap = Facebook.FacebookApplication.Current;
var signed_request_obj = Facebook.FacebookSignedRequest.Parse(fap,signed_request);
if (signed_request_obj != null)
{
JObject o = JObject.Parse(signed_request_obj.Data.ToString());
}