我正在尝试使用 SDK 更新书签计数字段,但尚未成功。
有人可以告诉我需要实例化哪些类来执行类似于以下链接的操作:
http://developers.facebook.com/blog/post/464
注意:
该链接演示了如何设置书签计数和删除它。我希望能够对 SDK 执行相同的操作,如有任何帮助,我们将不胜感激。
最佳答案
为此,首先您需要获取应用的访问 token :
private string GetAppAccessToken() {
var fbSettings = FacebookWebContext.Current.Settings;
var accessTokenUrl = String.Format("{0}oauth/access_token?client_id={1}&client_secret={2}&grant_type=client_credentials",
"https://graph.facebook.com/", fbSettings.AppId, fbSettings.AppSecret);
// the response is in the form: access_token=foo
var accessTokenKeyValue = HttpHelpers.HttpGetRequest(accessTokenUrl);
return accessTokenKeyValue.Split('=')[1];
}
关于上述方法需要注意的几点:
- 我使用 .Net HttpWebRequest 而不是 Facebook C# SDK 来获取应用程序 access_token,因为(从版本 5.011 RC1 开始)SDK 抛出 SerializationException。 SDK 似乎期望来自 Facebook 的 JSON 响应,但 Facebook 以以下形式返回访问 token :access_token=some_value(这不是有效的 JSON)。
HttpHelpers.HttpGetRequest 只是使用 .Net 的 HttpWebRequest。您也可以使用 WebClient,但无论您选择什么,您最终都希望发出此 http 请求:
获取 https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials HTTP/1.1 主办方:graph.facebook.com
现在您已经有了获取应用程序 access_token 的方法,您可以按如下方式生成应用程序请求(这里我使用 Facebook C# SDK):
public string GenerateAppRequest(string fbUserId) {
var appAccessToken = GetAppAccessToken();
var client = new FacebookClient(appAccessToken);
dynamic parameters = new ExpandoObject();
parameters.message = "Test: Action is required";
parameters.data = "Custom Data Here";
string id = client.Post(String.Format("{0}/apprequests", fbUserId), parameters);
return id;
}
同样,您可以按如下方式检索用户的所有应用请求: 注意:您可能不想返回“动态”,但为了简单起见,我在这里使用它。
public dynamic GetAppRequests(string fbUserId) {
var appAccessToken = GetAppAccessToken();
var client = new FacebookClient(appAccessToken);
dynamic result = client.Get(String.Format("{0}/apprequests", fbUserId));
return result;
}
希望对您有所帮助。
关于facebook - 将 Facebook Requests 2.0 与 C# SDK 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5931953/