我正在尝试使用SDK更新书签计数字段,但尚未取得任何成功。
有人可以告诉我需要实例化哪些类来执行与以下链接类似的操作:
http://developers.facebook.com/blog/post/464
注意:
该链接演示了如何设置书签计数并将其删除。我希望能够对SDK做同样的事情,我们将不胜感激。
答案 0 :(得分:6)
要做到这一点,首先需要获取应用的访问令牌:
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];
}
有关上述方法的几点注意事项:
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;
}
我希望这会有所帮助。