Facebook的"弃用脱机访问"文档(http://developers.facebook.com/docs/offline-access-deprecation/)声明如下:
*服务器端OAuth开发人员
如果access_token是从服务器端 OAuth调用生成的,则生成的access_token将具有更长的到期时间.如果在该用户仍然存在有效的access_token的情况下进行呼叫,则来自该第二次呼叫的返回的access_token可以是相同的或者可能已经改变,但是在任何一种情况下,到期时间都将被重置.同样,在同一天多次调用此选项将仅导致第一次调用延长到期时间.*
这似乎意味着服务器端OAuth 自动获得一个长期到期令牌.如果我在Facebook Developer高级对话框中启用"弃用脱机访问"设置,我确实会发现这种情况 - 令牌在60天后到期.但随着设置,令牌将在2小时后到期.
关于这个设置,我有点困惑:
题:
这个设置听起来像是一个"过渡/迁移"选项....如果我启用此选项,我将在6个月后获得60天代币吗?不使用"交换"端点?
为什么不自动将所有令牌设置为60天?
我无法将Facebook访问令牌的到期时间延长到60天.我在Facebook开发者页面上阅读了几篇文章:https: //developers.facebook.com/roadmap/offline-access-removal/
具体来说,我正在使用Facebook C#SDK,当我要求身份验证时,我正在做FacebookClient.GetLoginUrl(),并通过调用来获取访问令牌.
在那之后,我尝试使用FacebookClient.GetAsync("oauth/access_token")通过使用以下URL模式来延长到期时间
https://graph.facebook.com/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN
Run Code Online (Sandbox Code Playgroud)
但是,我没有看到access_token的过期时间被延长.我确实将我的应用设置为使用已弃用的offline_access ...任何人都有使用Facebook C#SDK的经验,可以给我一些想法吗?
我误解了"延长过期时间"的含义是否意味着在Facebook doc中?
非常感谢你!
我将Facebook SDK更新到6.0.10,一些以前工作的代码不再起作用了.我曾经在用户的墙上发布使用下面的方法.
FacebookClient曾经使用的类AppId,并且AppSecret我没有为我的应用程序提供任何访问令牌.
string uId = "SomeUid";
FacebookClient fb = new FacebookClient(AppId,AppSecret );
string userFeedPath = String.Format("/{0}/feed", uId);
dynamic parameters = new ExpandoObject();
parameters.link = "Test@test";
parameters.message = "test";
try
{
dynamic result = fb.Post(userFeedPath, parameters);
}
catch(Exception ex)
{
}
Run Code Online (Sandbox Code Playgroud)
现在即使我试试这个,
FacebookClient fb = new FacebookClient();
fb.AppId = "1234...";
fb.AppSecret = "76e69e0c334995cecc8c....";
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
(OAuthException - #200)(#200)此API调用需要有效的app_id.
我该如何解决这个问题?
如何在我的Facebook应用程序中以编程方式获取我朋友的电子邮件?facebook是否提供此功能?
当我通过Browsersession.Login()登录Facebook时,它工作正常,但BrowserSession.LoginComplete事件在此期间不起作用.
任何人都可以建议为什么我的项目中会发生这种事情?
我在我的网站上有这个fb登录按钮,它工作得很好.如何实现注销按钮?以下是我的登录部分代码.
<fb:login-button size="small" onlogin="RedirectLogon();" perms="email,user_birthday" autologoutlink="true">
<%=LanguageManager.Instance.Translate("root/facebook/login")%>
</fb:login-button>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用SDK更新书签计数字段,但尚未取得任何成功.
有人可以告诉我我需要实例化哪些类来执行类似于以下链接的操作:
http://developers.facebook.com/blog/post/464
注意:
该链接演示了如何设置书签计数并将其删除.我希望能够对SDK做同样的事情,任何帮助将不胜感激.
我正在尝试添加一个注销功能,该功能在ApplicationBarMenuItem的click事件中调用,遵循此博客上的说明
这就是我的代码:
var oauth = new FacebookOAuthClient();
var logoutParameters = new Dictionary<string, object>
{
{ "next", "http://www.facebook.com" }
};
var logoutUrl = oauth.GetLogoutUrl(logoutParameters);
LayoutRoot.Children.Add(FacebookLoginBrowser);
FacebookLoginBrowser.Navigate(new Uri(logoutUrl.AbsoluteUri, UriKind.Absolute));
Run Code Online (Sandbox Code Playgroud)
我期望这段代码会在Navigated事件完成时将用户从Facebook注销,然后显示参数中传递的任何URL(在本例中为facebook.com).然而,我所看到的是它总是加载" http://m.facebook.com/ ",无论传入什么,它都不会注销Facebook.我不关心它加载后的内容(这会很棒,但此时我只是希望它执行注销操作,以便用户可以在他们再次启动我的应用程序时退出并登录).我能成功注销用户的唯一方法是,如果他们了解页面何时加载,他们需要向下滚动,放大,并在页面底部手动点击"注销" - 这不是一个可接受的用户体验.
我还从该博客下载了示例代码,它大致相同.
我已经看过这个帖子,这个帖子和使用的URL非常接近oath.GetLogoutUrl(logoutParameters)返回的内容,但我尝试构造具有相同结果的确切URL:
var logoutUrl = new Uri("https://www.facebook.com/logout.php?next=http://www.facebook.com&access_token="+fbClient.AccessToken);
Run Code Online (Sandbox Code Playgroud)
这绝对是我的应用程序的船舶止动器,所以任何人可以提供的任何帮助或建议将非常感谢!
我创建了Facebook页面.我没有应用程序密钥,也没有访问令牌.
我想从我的.NET桌面应用程序发布到此页面.我该怎么做?任何人都可以帮忙,我在哪里可以获得访问令牌?
我应该创建一个新的Facebook应用程序吗?如果是,我如何授予此应用程序的权限以在页面墙上发布?
UPD1:我没有网站.我需要将公司的新闻从.NET桌面应用程序发布到公司的Facebook页面.我所拥有的只是Facebook页面帐户的登录/密码.
UPD2:我创建了Facebook应用程序.使用AppID/SecretKey.我可以获得访问令牌.但是......我如何授予发布到页面墙的权限?
(OAuthException) (#200) The user hasn't authorized the application to perform this action
我使用NuGet安装的Facebook C#SDK允许用户使用Facebook登录我的网站.在我找到的所有C#SDK文档中,使用JavaScript SDK获取了访问令牌.我想在不使用JavaScript SDK的情况下完成整个身份验证流服务器端.
在哪里可以找到有关使用Facebook C#SDK进行完整服务器端身份验证所需遵循的步骤的良好文档或示例代码?
结合C#SDK和JavaScript SDK有什么优势,还是仅仅坚持服务器端流程?