类似于Asp.Net MVC Facebook的门机制
本文关键字:机制 Facebook MVC Asp Net 类似于 | 更新日期: 2023-09-27 18:23:44
我正在试用ASP.Net MVC 4 Facebook模板和"框架",我发现在互联网上很难得到任何帮助,除了"生日应用程序"示例。
我正在构建一个带有"点赞门"的简单Facebook应用程序,这意味着人们只有在"点赞"了某个页面后才能访问该应用程序。
我的想法是在控制器中检查用户是否"喜欢"了粉丝页面,如果没有,则将其重定向到"LikeFirst"视图。
这是控制器,直接来自模板:
[FacebookAuthorize("email", "user_photos")]
public async Task<ActionResult> Index(FacebookContext context)
{
if (ModelState.IsValid)
{
var user = await context.Client.GetCurrentUserAsync<MyAppUser>();
if(//how check the user has liked the fan page)
{
return View(user);
}
else
{
return View("LikeFirst");
}
}
return View("Error");
}
根据我在示例中得到的信息,Framework实际上使用"MyAppUser"对象来构造Facebook查询。
这是示例应用程序中使用的类型。
public class MyAppUser
{
public string Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
[JsonProperty("picture")] // This renames the property to picture.
[FacebookFieldModifier("type(large)")] // This sets the picture size to large.
public FacebookConnection<FacebookPicture> ProfilePicture { get; set; }
[FacebookFieldModifier("limit(8)")] // This sets the size of the friend list to 8, remove it to get all friends.
public FacebookGroupConnection<MyAppUserFriendSimple> Friends { get; set; }
[FacebookFieldModifier("limit(16)")] // This sets the size of the photo list to 16, remove it to get all photos.
public FacebookGroupConnection<FacebookPhoto> Photos { get; set; }
}
从Facebook文档中,我应该能够简单地通过HTTP GET到/PROFILE_ID/likes/PAGE_ID来检查这一点,但我应该如何使用ASP.Net MVC Facebook框架来做到这一点?在MyAppUser类中有什么可以更改的吗?这是完全不同的东西吗?
谢谢!
今天早上就遇到了这个挑战——必须对它进行一些修改才能解决。以下是
在用户类型上创建一个"赞"属性
public class MyAppUser
{
public string Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public FacebookGroupConnection<FacebookLike> Likes { get; set; }
...
}
当然,这意味着你必须创建一个类似FacebookLike类型的
public class FacebookLike
{
public string Id { get; set; }
public string Name { get; set; }
}
将以下权限字符串添加到您的FacebookAuthorizeAttribute
[FacebookAuthorize("email", "user_photos", "user_likes")]
public async Task<ActionResult> Index(FacebookContext context)
{
...
}
最后,为了找出用户喜欢你的页面,你找到你的页面Id,并将以下代码放在你想要执行检查的相关控制器方法中-
if (user.Likes.Data.FirstOrDefault(like => like.Id == "<your_fb_pageid>") == null)
{
return View("LikeUs");
}
希望这能帮助
根据Cordell Lawrence的回答,实际上,如果你只想检查用户是否喜欢某个页面,可以添加一个FacebookFieldModifier
public class MyAppUser
{
public string Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
[FacebookFieldModifier("id({PAGE_ID})")]
public FacebookGroupConnection<FacebookLike> Likes { get; set; }
...
}
类Facebook
public class FacebookLike
{
public string Id { get; set; }
public string Name { get; set; }
}
从用户获得权限
[FacebookAuthorize("email", "user_photos", "user_likes")]
public async Task<ActionResult> Index(FacebookContext context)
{
...
}
最重要的是FacebookFieldModifier。如果用户不喜欢该页面,则从Facebook返回的列表将为空
我还没有尝试编译上面的代码,希望这能帮助