当前位置: 首页 > 编程语言 > C#

使用asp.netC#sdk在Facebook中分享粉丝独家内容

时间:2023-04-10 20:57:32 C#

使用asp.netC#sdk在Facebook中分享粉丝独家内容,我希望喜欢我的页面的用户只能使用我的应用程序。(爱woobox)我在这个链接中找到了一些php的解决方案,但是没有关于如何从.net的任何来源在ASP.NET中获得喜欢的信息我再次在这个链接中找到了另一个php的例子,但我找不到c#的答案:谢谢当您的网页加载到Facebookcanvas应用程序时,您会收到签名的请求;您应该能够解析类似于以下内容的签名请求:varencoding=newUTF8Encoding();vardecodedJson=payload.Replace("=",string.Empty).Replace('-','+').Replace('_','/');varbase64JsonArray=Convert.FromBase64String(decodedJson.PadRight(decodedJson.Length+(4-decodedJson.Length%4)%4,'='));varjson=encoding.GetString(base64JsonArray);varo=JObject.Parse(json);varlPid=Convert.ToString(o.SelectToken("page.id")).Replace(""","");varlLiked=Convert.ToString(o.SelectToken("page.liked")).Replace(""","");varlUserId=Convert.ToString(o.SelectToken("user_id")).Replace(""","");}您需要添加对json库的引用才能解析C#中的签名请求,从http下载://json.codeplex.com/另请参阅如何在C#中执行此操作DecodingOAuth2.0forCanvassigned_requestin?如果您对签名请求感兴趣生气了。这仅适用于旧版API或user_likes权限。如果您想要没有特定权限的解决方案,我将向您展示两种方法。将它们与AJAX一起使用以在用户按下时刷新页面。选项1)RESTAPI使用旧版API,您可以在C#中使用Pages.IsFanhttps://api.facebook.com/method/pages.isFan?page_id=...&uid=...&access_token=...在以下操作中。varappID="....";varappSecret="....";varuid="....";varpageId="....";WebClient客户端=newWebClient();=string.Concat("https://graph.facebook.com/oauth/access_token?","client_id=",appID,"&client_secret=",appSecret,"&grant_type=","client_credentials");varresponse=client.DownloadString(appAuthUri);varaccess_token=response.Split('=')[1];varisFanUri=string.Concat("https://api.facebook.com/method/pages.isFan?","format=","json","&page_id=",pageId,"&uid=",uid,"&access_token=",access_token);response=client.DownloadString(isFanUri);布尔是风扇;bool.TryParse(response,outisFan);选项2)客户端FBXML方法。这是在客户端使用Javascript完成的,方法是在用户单击“喜欢”按钮时订阅一个事件。它记录在这里。您如何知道用户何时单击“喜欢”按钮?如果您使用的是按钮的XFBML版本,您可以通过FB.Event.subscribe订阅“edge.create”事件。这里生成一个类似FBXML的按钮。然后使用JavascriptSDK订阅edge.create事件。将此代码放在文档末尾之前的BODY中。this.canvasAuthorizer=newCanvasAuthorizer{Permissions=new[]{"user_about_me","publish_stream","offline_access","user_likes","friends_about_me"}};this.canvasAuthorizer.Authorize();如果(FacebookWebContext.Current.IsAuthorized()){this.facebookWebClient=newFacebookWebClient(FacebookWebContext.Current);字符串requested_Data=HttpContext.Current.Request.Form["signed_request"];动态解码签名请求=FacebookSignedRequest.Parse(this.facebookApplication,requested_Data);if(decodedSignedRequest.Data.page!=null){//趣味页面this.IsLike=decodedSignedRequest.Data.page.liked;}else{//应用页面动态likes=this.facebookWebClient.Get("/me/likes");foreach(likes.data中的动态){if(like.id==this.FacebookFanPageID){this.IsLike=true;如果您的应用是画布应用,您可以(应该?)使用signed_request参数来检查用户是否喜欢它所在的页面:#pseudocodesigned_request=decode_signed_request()ifsigned_request['page']['喜欢']:#用户喜欢页面,做一些很酷的事情:#用户不喜欢页面。重定向到某个地方告诉他们为什么他们应该将signed_request作为POST变量传递到您的页面;好像有一个名为signed_request的表单字段并且表单已经在您的(实际上这基本上是facebook“运行”您的应用程序;表单是自动提交的,而不是等待用户提交)所以在ASP.net中你应该可以通过Request对象获取:Request["signed_request"]如果你想为一个页面创建一个“signapplication”,这个方法很有用;您可以在不授予您额外权限的情况下检测用户是否喜欢该页面。这可以在PHP中借助SQL查询`$result=$facebook->api(array("method"=>"fql.query","query"=>"SELECTuidFROMpage_fanWHEREuid=$uidANDpage_id=$page_id"));这里的$result变量可以用来隔离粉丝和非粉丝内容。会用到,需要详细了解C#学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: