我从CodePlex下载了C#Facebook SDK"Simple MVC Website Example":
http://facebooksdk.codeplex.com/releases/view/54371
并已成功通过我的测试Facebook应用程序进行身份验证.但我无法弄清楚如何获取访问令牌(我想要离线访问,所以我只需要抓取一次令牌,当用户首次授权我的应用程序获取他们的Feed数据时).
非常感谢
我正面临一个错误
无法对空引用执行运行时绑定
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:无法对空引用执行运行时绑定
来源错误:
第27行:lblBirthday.Text =(myInfo.birthday == null?string.Empty:DateTime.Parse(myInfo.birthday).ToString("dd-MMM-yy")); 第28行:lblHometown.Text =(myInfo.hometown.name == null?string.Empty:myInfo.hometown.name); 第29行:lblLocation.Text =(myInfo.location.name == null?string.Empty:myInfo.location.name); 第30行:pnlHello.Visible = true; 第31行:}
这是我的代码:
var fb = new FacebookWebClient();
dynamic myInfo = fb.Get("me");
lblName.Text = myInfo.name;
imgProfile.ImageUrl = "https://graph.facebook.com/" + myInfo.id + "/picture";
lblBirthday.Text = (myInfo.birthday == null ? string.Empty : DateTime.Parse(myInfo.birthday).ToString("dd-MMM-yy"));
lblHometown.Text = (myInfo.hometown.name == null ? string.Empty : myInfo.hometown.name);
lblLocation.Text = (myInfo.location.name == null ? string.Empty : myInfo.location.name);
pnlHello.Visible = true;
Run Code Online (Sandbox Code Playgroud) 我一直在阅读(并且搜索很多)但是找不到适合开始使用Facebook C#SDK for WP7的资源.我不是在寻找代码的副本,而是使用这个库来开发我的WP7应用程序的起点.
我的目标是提供一个功能来验证用户,并允许他们发布到Facebook.
我已经阅读了他们的文档,这个主题没有任何内容,只是如何在facebook(???)中注册您的应用程序.他们有两个入门链接,但他们提出了一个空页.我遇到的大多数示例都是针对.NET 4(用于桌面)或ASP.NET,它们不使用与WP7(silverlight)相同的模型.
我已经查看了所提供的类和方法,它们看起来很容易实现,但显然需要预先进行的步骤(这些是什么?).
我知道我们可能不得不设置一个新的facebook应用程序实例,然后进行身份验证,但到目前为止,我还没有非常成功地解决这个问题.
有人可以分享一些资源,从哪里开始这个?谢谢.
我有一个位于Facebook照片服务器上的crossdomain.xml的问题.第一个问题出现在Silverlight请求clientaccesspolicy.xml - Facebook服务器返回403 - Access Denied,这很好,因为他们也在他们的服务器上部署了crossdomain.xml.然后Silverlight请求crossdomain.xml,它得到的响应就是这样:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain- policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" secure="false" to-ports="*" />
<site-control permitted-cross-domain-policies="master-only" />
</cross-domain-policy>
Run Code Online (Sandbox Code Playgroud)
然后我用这个玩了一段时间,将crossdomain.xml部署到我自己的服务器上并得到了相同的结果 - 一个安全例外.然后我开始解决问题并得出结论,如果我只删除to-ports ="*"属性,一切都会按预期工作?有没有人知道如何克服这个问题,有没有人遇到过同样的问题,或者是我做错了什么?
我们使用Like Gate构建了一个Facebook 页面选项卡应用程序.我们之前已经做过无数次,在这方面这个应用并没有什么不寻常之处.
在我们的ASP.Net 4.0 Web窗体应用程序中,我们使用了Facebook C#SDK,最新版本(6.4.2)直接从NuGet和以下C#代码中提取:
public static bool IsPageLiked(string appId,
string appSecret, string signedRequest)
{
var fb = new FacebookClient { AppId = appId };
dynamic req = fb.ParseSignedRequest(appSecret, signedRequest);
return req.page.liked;
}
Run Code Online (Sandbox Code Playgroud)
我们以前曾多次使用过此代码,我们从来没有遇到任何问题.该应用程序及其Like Gate在未发布的页面上运行良好- 因此只有位于相应应用角色中的页面管理员才能看到该应用.
不过,我们看到了间歇性的错误.这仅影响某些用户,但是这些用户只要他们喜欢或不同于托管Tab应用的页面就可以看到该消息:
此内容不再可用
您请求的内容目前无法显示.它可能暂时不可用,您点击的链接可能已过期,或者您可能无权查看此页面.
如果您尝试访问您没有权限的内容,则会出现该错误消息.但是,用户仍然是Page Admins,因此他们查看App和Page的权限不会改变.
谷歌表示,这是Facebook的一个错误,没有人真正找到一个令人满意的解决方案.奇怪的是,我们的客户对这个答案并不十分印象深刻.
有没有人能提供更具建设性的东西?请?:)
我需要为我拥有的网页生成页面访问令牌,网页将使用此令牌发布到其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天,然后它将是与上面相同的问题.
我目前正在使用http://facebooksdk.codeplex.com测试facebook connect的OAuth实现.
我有一个带有2个简单动作的FacebookController,叫做LogOn和CallBack.
一切正常,用户正确登录到我的系统.
问题是当调用CallBack动作时,会发生一些奇怪的事情
return Redirect(loggedUrl);
Run Code Online (Sandbox Code Playgroud)
重定向到正确记录的URL但以以下字符结尾: #_=_
似乎Facebook服务器使用以下HTTP标头将信息发送到我的网络服务器:
HTTP/1.1 302 Found
Cache-Control: private, no-cache, no-store, must-revalidate
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Location: http://mywebsite.com/Facebook/CallBack/?state=1&code=AQCXexr10uxANSBOu9JqrBDxqPkWbsyxM1S9ltuY9XwCXW7eGsOII329SthClxOSM_a7wJvwrXh1_O3D5I7E_nxCDTWDLpyYdMpMUfw4zMWcQ4oV2PmRkIMd2NfPYRKlkLgkurEzka1CjAF1jp8Xb3crklOB59W4IT7LZy6MEmFusuhSKacmsTcV1LAOW4uJ3K4#_=_
P3P: CP="Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p"
Pragma: no-cache
Set-Cookie: locale=en_US; expires=Fri, 28-Oct-2011 00:09:38 GMT; path=/; domain=.facebook.com
Content-Type: text/html; charset=utf-8
X-FB-Server: 10.43.103.61
X-Cnection: close
Date: Fri, 21 Oct 2011 00:09:38 GMT
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)
如您所见,我们可以#_=_在Location值的末尾找到字符.
这就像Redirect #_=_通过将字符自动添加到loggedUrl来考虑字符.
即使我尝试使用 …
我想编写一个控制台应用程序,每天早上自动将信息发布到我的墙上.
我已经注册了Facebook开发者并拥有AppID和App Secret
我一直在尝试使用C#facebook SDK并查看了几个示例.
似乎示例获取用户令牌 - 但必须使用Windows窗体中的浏览器.这是一个自动化过程 - 所以我不想让用户在场.
我还使用应用程序令牌创建了一些示例 - 但它似乎无法写入墙.
我很快写了Twitter等价物.我一定在这里遗漏了什么?
什么是正确的方法?
似乎所有我应该需要的是:FaceBookClient(appID,appSecret)然后只是FaceBookClient.Put(消息)???
澄清补充说:
使用C#facebook sdk winform应用程序我不得不更改他们的FacebookLoginDialog.cs以使用folling URL:
它返回WebBrowser.DocumentText中的一个accesskey
如果我然后打电话:
var fb = new FacebookClient(_accessToken);
dynamic parameters = new ExpandoObject();
parameters.message = "Hello World!";
dynamic result = fb.Post("me/feed", parameters);
Run Code Online (Sandbox Code Playgroud)
我得到了例外:
(OAuthException)必须使用活动访问令牌来查询有关当前用户的信息.
如果我将上面的代码更改为不使用该访问令牌 - 但使用appID和Appsecret:
FacebookClient myFacebookClient = new FacebookClient("APPID", "APPSECRET");
dynamic parameters = new ExpandoObject();
parameters.message = "Hello World!";
dynamic result = myFacebookClient.Post("me/feed", parameters);
Run Code Online (Sandbox Code Playgroud)
然后我得到了例外:
(OAuthException)必须使用活动访问令牌来查询有关当前用户的信息.
我想这是同样的例外
我想在安装后使用InstallShield运行我的exe.InstallShield正确完成设置但不运行exe.
我找到了另一种在启动时添加exe的方法,但它在重启后运行.我希望它能在不重启的情况下运行.
可能吗 ?
所以.我遇到了一个问题,投入数小时在互联网上搜索并没有多大帮助,认为SO总是一个不错的选择.我有一个facebook GraphAPI调用,以获取Facebook用户提供如下所示:
dynamic myFeed = await fb.GetTaskAsync(
("me/feed?fields=id,from {{id, name, picture{{url}} }},story,picture,link,name,description," +
"message,type,created_time,likes,comments")
.GraphAPICall(appsecret_proof));
Run Code Online (Sandbox Code Playgroud)
上面帮我回复一些最新的帖子,用户发布了一段时间说21或22个帖子但不是完整的用户帖子列表.我正在寻找一种使用facebook分页迭代用户提要的方法我最终找到了这个与facebook Offset分页一起使用的解决方案.
dynamic myFeed = await fb.GetTaskAsync(
("me/feed?fields=id,from {{id, name, picture{{url}} }},story,picture,link,name,description," +
"message,type,created_time,likes,comments")
.GraphAPICall(appsecret_proof), new {limit = "1000", offset = "21" });
Run Code Online (Sandbox Code Playgroud)
这让我向我想要实现的目标迈进了一步,但我认为这不是理想的做法,也不会返回所有用户帖子.有没有解决方法?请帮忙.
PS:我正在使用Facebook C#SDK.
更新1: 根据杰里米的回答.似乎facebook光标分页是我的要求唯一正确的选项.我想知道C#facebook sdk是否提供任何功能来迭代下一个边缘,这样我就可以在一个电话中获得所有的帖子,这有什么可能的解决方案吗?PS:我已经多次通过facebook API文档,我知道Nodes,Edges和Fields究竟是什么,唯一不幸的是facebook还不支持C#SDK,我无法在Facebook上找到合适的文档C#SDK也是.
facebook-c#-sdk ×10
facebook ×7
c# ×5
silverlight ×2
.net ×1
asp.net ×1
cross-domain ×1
pagination ×1
redirect ×1
sdk ×1