我正在使用这里找到的 SDK... http://facebooksdk.net/
在这一点上,文档似乎严重缺乏。
经过一段时间的搜索和试验,我把它拼凑在一起。
事实证明,挑战之一是 AccessToken 过期。因此,您还必须编写在前一个 AccessToken 过期时检索新 AccessToken 的代码。
这就是我想出的……
public static class FacebookUpdates
{
private static string AppId = "00000000";
private static string AppSecret = "xxxxxxxxx";
private static string UserID = "0000000000";
private static string AccessToken;
public static dynamic GetLinks()
{
var fb = new FacebookClient();
if (string.IsNullOrEmpty(AccessToken)) AccessToken = GetAccessToken(fb); // Cache the result in static variable AccessToken
fb.AccessToken = AccessToken;
var query = string.Format("SELECT link_id, title, url FROM link WHERE owner = {0} LIMIT 5", UserID);
dynamic parameters = new ExpandoObject();
parameters.q = query;
dynamic results;
try
{
results = fb.Get("/fql", parameters);
}
catch (FacebookOAuthException)
{
AccessToken = GetAccessToken(fb); // Cache the result in static variable AccessToken
fb.AccessToken = AccessToken;
// Retry with new AccessToken
results = fb.Get("/fql", parameters);
}
return results;
}
private static string GetAccessToken(FacebookClient fb)
{
dynamic result = fb.Get("oauth/access_token", new
{
client_id = AppId,
client_secret = AppSecret,
grant_type = "client_credentials"
});
return result.access_token;
}
}
现在您可以创建一个在代码隐藏中调用的用户控件GetLinks()
(抱歉,此示例在 VB 中)...
Public Shared FacebookLinks As Object = FacebookUpdates.GetLinks().data
然后用户控件可能看起来像这样......
<%@ OutputCache Duration="600" VaryByParam="None" %>
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="FacebookUpdates.ascx.vb" Inherits="FacebookUpdates" %>
<%For Each Link In FacebookLinks%>
<p><a href="<%= Link.url %>" rel="nofollow" target="_blank"><%= Link.title%></a></p>
<%Next%>
如果您不是在编写 ASP.NET 应用程序等,则不需要编写代码。尝试仅使用 Windows PowerShell 和http://facebookpsmodule.codeplex.com。