换句话说,是否有一个API允许Facebook用户更改他们的帖子(通过第三方应用程序),这些帖子比指定的日期更早,从"朋友"列表可见到另一个,例如"仅"我"或"关闭朋友"?
人们越来越多地将他们的专业和熟人联系人添加为Facebook好友.
限制帖子的可见性是有意义的 - 以迎合不同的受众.
展望未来,这很容易,因为Facebook提供了充足的控制:

但问题是,除非你从一开始就这样设置,否则没有现有功能可以自动将所有旧墙帖和照片的可见性更改为"仅限我","关闭朋友"等等.
这提出了一个问题,因为早在2004年12月就手动逐个浏览帖子是不可行的:

在介绍时间轴时,Facebook确实提供了将所有帖子从"公共"更改为"朋友"的功能:

但是,现在还不可能将超过特定日期的帖子的观众更改为"仅限我","亲密朋友","朋友;除了:熟人"等.
但是,很明显,这样做的基本功能就在某处.
Facebook API中是否有可用于为此构建应用程序的功能?如果是这样,哪个?
facebook facebook-graph-api facebook-javascript-sdk facebook-c#-sdk facebook-apps
我希望能够使用Facebook C#SDK在我自己的Web应用程序上验证自己(我的个人资料,而不仅仅是我的应用程序).使用Graph API,我可以获得访问令牌,但该令牌似乎与Facebook C#无法正常工作,因为它似乎是无状态的.
抛出的错误是:
(OAuthException) An active access token must be used to query information about the current user.
Run Code Online (Sandbox Code Playgroud)
我浏览了Facebook C#SDK和文档,我看到的大部分信息都是将用户重定向到登录页面,这不是我想要的.
有没有人有自己的自动记录样本,所以我可以提取自己的信息?
TIA
我有一个在IIS 7.5和VS 2010中运行的WCF服务.此服务有一些方法在内部使用Facebook C#SDK(版本4.1,而不是最新版本),以便从/向Facebook执行一些GET和POST.由于Facebook将很快删除了offline_access我要处理,其中一个访问令牌已过期的情况.
我已经了解了执行身份验证的方式(为了获取代码并在获取访问令牌之后),以便使用Graph API获取Facebook信息(如此处所示).
我有两个问题:
OAuthException.但有没有更好的方法来检测到期?我不想我想在服务方法的实现中实现以下方案:
sc = SocialNetworkAccountDao.GetByUser(user)
isExpired = call method to check if the sc.token is expired.
if (isExpired)
{
newToken = call method for getting new access token
sc.token = newToken;
SocialNetworkAccount.Update(sc);
}
Facebook = new Facebook (sc.token)
Facebook.Post( ..... )
--
Run Code Online (Sandbox Code Playgroud)
与QAuth对话通信的过程是异步的(执行重定向),并且与访问令牌url的通信以获得访问令牌,这是同步执行的.
最后的问题:
我正在寻找一个适用于MVC3的会员入门套件/ NuGet包来处理用户管理以及Facebook身份验证和Twitter身份验证等事情.
Microsoft.Web.Helpers似乎有一些Facebook和Twitter助手,但我认为它没有我正在寻找的东西.
有一个很好的MVC会员入门套件可用,但我相信它适用于MVC2,我认为Facebook/Twitter支持可能超出其范围... https://github.com/TroyGoode/MembershipStarterKit
我觉得这应该存在,而我却找不到它.所以现在的问题...有谁知道一个NuGet包或入门套件,ASP.NET MVC3会员的管理,也许包括外的盒集成Facebook和Twitter的认证?
根据此处给出的指令,搜索公共信息(如https://graph.facebook.com/search?q=QUERY&type=OBJECT_TYPE)需要有一个有效的访问令牌.据我所知,访问令牌是指用户授权应用访问其信息的时间; 但这是灼热的公共信息.如何获取应用访问令牌来搜索公共信息?
在该页面中,Facebook会自动将我的访问令牌添加到链接中
https://graph.facebook.com/search?q=watermelon&type=post&access_token=MY_ACCESS_TOKEN
Run Code Online (Sandbox Code Playgroud)
我的应用程序创建了一个访问令牌,如https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=SECRET_ID&grant_type=client_credentials
当我在url https://graph.facebook.com/search?q=watermelon&type=post&access_token=GENERATED_ACCESS_TOKEN中使用生成的访问令牌时,它会出错
{
"error": {
"message": "A user access token is required to request this resource.",
"type": "OAuthException"
}
}
Run Code Online (Sandbox Code Playgroud)
我刚刚下载了C#SDK和ASP.NET MVC示例,将其修改为与4.2.1一起使用.(web config facebookSettings参数等),创建了我的Facebook应用程序并尝试运行它.点击Facebook登录按钮 - 确定,在facebook弹出窗口中输入凭据 - 确定,允许访问我的应用程序 - 好的,然后我收到此错误:
System.Net.Sockets.SocketException:尝试以其访问权限禁止的方式访问套接字66.220.146.47:443
var app = new FacebookApp();
if (app.Session == null)
{
// The user isnt logged in to Facebook
// send them to the home page
return RedirectToAction("Index");
}
// Get the user info from the Graph API
dynamic me = app.Api("/me"); // EXCEPTION THROWN HERE
ViewData["FirstName"] = me.first_name;
ViewData["LastName"] = me.last_name;
Run Code Online (Sandbox Code Playgroud)
该app物体是OK,我认为(含设置参数,可以与访问令牌会话对象和我的Facebook用户ID等)
我正在使用本地开发地址http://myappdev.local(设置为127.0.0.1hosts文件).我的Facebook应用程序设置中也设置了相同的地址,也是域名myappdev.local- 这可能是问题吗?我localhost:1234在一些教程中看到了一些例子.
Update2 这篇文章已经老了但仍然相关..下面是我解决它的方式.我标记了其他人回答,因为我认为它更好地回答了这个问题.我在accountcontroller中调用了一个类似的方法(我将要重构:)).字符串应该是一个列表......我想你明白了.
/// <summary>
/// Use this method when an action fails due to lack of priviligies. It will redirect user to facebook with provided permission request.
/// Refactor to handle list of request.
/// </summary>
/// <param name="permission"></param>
private static void AddAdditionalPermissions(string permission)
{
System.Diagnostics.Trace.TraceInformation(permission + " not authorized for user.");
string facebook_urlAuthorize_base = "https://graph.facebook.com/oauth/authorize";
string scope = permission; //see: https://developers.facebook.com/docs/authentication/permissions/ for extended permissions
string urlAuthorize = facebook_urlAuthorize_base;
urlAuthorize += "?client_id=" + AppId;
urlAuthorize += "&redirect_uri=" + "https://fbd.anteckna.nu/";
urlAuthorize …Run Code Online (Sandbox Code Playgroud) Facebook要求我创建appsecret_proof:https: //developers.facebook.com/docs/graph-api/securing-requests
我使用以下代码完成了此操作:
public string FaceBookSecret(string content, string key)
{
var encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(key);
byte[] messageBytes = encoding.GetBytes(content);
using (var hmacsha256 = new HMACSHA256(keyByte))
{
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
return Convert.ToBase64String(hashmessage);
}
}
Run Code Online (Sandbox Code Playgroud)
一切看起来都不错,但facebook说appsecret_proof无效.我已登录,当我删除密钥时,我可以正常地完成所有操作.所以节省一些时间:
使用示例
dynamic results = client.Post("/" + model.PostAsId + "/feed", new { message = model.Message, appsecret_proof = FaceBookSecret(postAs.AuthToken, AppSecret) });
Run Code Online (Sandbox Code Playgroud)
我认为它可能与编码或其他东西有关,但说实话,我只是不知道.
我也在使用Facebook .net SDK,但这在文档中没有多少,并且似乎没有涉及与自动化,服务器端操作等有关的任何事情.
谢谢
旧的REST API中的一个非常有用的调用是Friends.getAppUsers.此调用将返回正在使用应用程序的所有朋友.遗憾的是,这不在Open Graph API中.关于它有一个很好的Stack Overflow帖子,Facebook'Friends.getAppUsers'使用Graph API.
但是,可以使用Graph API进行FQL调用,如图API API资源管理器中所示.
我想也许我可以使用C#SDK进行以下调用:
fb.GetAsync("fql/?q=SELECT uid,username, is_app_user FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1 = me()) AND is_app_user=1");
Run Code Online (Sandbox Code Playgroud)
但是,这返回了一个错误.有没有办法解决GetAppUsers使用现有C#SDK 缺少呼叫的问题?
我需要为我拥有的网页生成页面访问令牌,网页将使用此令牌发布到其Facebook页面订阅源.
这就是我做的:
Get Access Tokenmanage_pages/ user_events)要获得Page Access Token我必须me/accounts在Graph API Explorer中运行.这将显示我使用新页面访问令牌(短期(大约60分钟))到每个页面的所有页面.
这样Page Access Token可以在我的C#代码中使用,以便发布到Feed.
问题
当另一个用户使用我的网页发布帖子时,我需要生成一个新的Page Access Token(在代码中),然后用它将用户帖子发布到网站的Facebook提要.问题是我显然不能在那里授予帖子,所以我该如何处理?
我显然不能运行me/accounts(在代码中)命令来Page Access Token从这里获取.
我已经查看了扩展的访问令牌,但这将持续60天,然后它将是与上面相同的问题.