我正在使用FB c#开发工具包开发一个FB MVC3站点。
在我的控制器中有这行私有常量字符串ExtendedPermissions = "user_about_me,publish_stream";
在logon方法中是这一行: if (fbWebContext.IsAuthorized(ExtendedPermissions.Split(',‘))
它总是返回false,即使我有一个访问令牌,所以我跟踪到源代码中……
bool isAuthorized = IsAuthenticated();返回true,以便授权用户。然后,它检查以此调用var currentPerms = HasPermissions(AccessToken,Settings.AppId,UserId,permissions )开始的权限;
它返回一个值为"installed“的条目。正如您稍后将看到的,这没有任何意义。继续往下读。
然后,它针对FB权限循环检查传递的权限,如下所示: foreach ( perm in perm中的var perm){ if (!currentPerms.Contains(perm)) { return false;}}当然它会返回false,因为权限user_about_me和publish_stream不在FB权限中。然而,我打开FB中的应用程序,它显示了以下内容
访问我的基本信息包括姓名、头像、性别、网络、用户ID、朋友列表,以及我与每个人共享的任何其他信息。
所以我的问题是:“已安装”是什么意思?它不应该返回user_about_me吗?
那么上面的代码行不应该是var currentPerms = HasPermissions(AccessToken,Settings.AppId,UserId,permissions);
返回"user_about_me“。然而,它只返回单词“已安装”。
所以我知道为什么它会失败,但逻辑告诉我它不应该失败。它与访问用户的FB权限有关。
还有没有其他人看过这个或者有答案?
非常感谢
发布于 2011-09-27 12:40:42
我尝试了FB C# SDK 5.2.1,但我在HasPermission上遇到了问题。但在这里搜索了一下,找到了你的-very实际问题。在我的例子中,FacebookWebContext.Current.HasPermission("user_about_me")返回false。但是FacebookWebContext.Current.IsAuthorized("user_about_me")返回true。
我试着用
if (FacebookWebContext.Current.IsAuthorized("publish_stream"))
对我来说,它返回的是真。
我还尝试了您的split方法,以检查是否可以一次检查更多的权限,并且它也返回true。
SDK提示:尝试最新版本,尝试使用FacebookWebContext.Current代替“”(这让我觉得有问题)。
发布于 2011-10-31 00:18:44
有相同的问题,并解决了它作为一个视图袋项目没有设置。
检查传递给facebook的权限/范围。
我不得不加上
ViewBag.ExtendedPermissions = ExtendedPermissions;
以便在javascript和passthrough中呈现。
https://stackoverflow.com/questions/7458615
复制