【发布时间】:2011-02-16 19:16:37
【问题描述】:
最初我在此处使用 .net sdk for facebook:
http://facebooktoolkit.codeplex.com/
但是现在,我正在尝试迁移到下面托管的最新版本,并实现了最近的许多新的 facebook 功能:
http://facebooksdk.codeplex.com/
尽管我已经构建了一些 facebook canvas 应用程序,甚至集成了我们公司的网站以使用 facebook connect,但我仍然对有关 facebook 身份验证/授权更改的细微差别和细节感到有些困惑。例如,我如何将以下 .NET 服务器端代码移植到新的 v5.0 .NET SDK?
string perm = "publish_stream"; //or any permission you want to check
FBConnectAuthentication auth = new FBConnectAuthentication(Settings.FBConnectAPIKey, Settings.FBConnectAPISecret);
FBConnectSession fbSession = auth.GetSession();
string userId = fbSession.UserID;
var session = new Facebook.Session.ConnectSession(Settings.FBConnectAPIKey, Settings.FBConnectAPISecret);
var api = new Facebook.Rest.Api(session);
var usr = SessionInfo.CurrentUserOrUserAccountWithLastEmailAddressEntered;
Facebook.Schema.Enums.ExtendedPermissions perm
= (Facebook.Schema.Enums.ExtendedPermissions)Enum.Parse(typeof(Facebook.Schema.Enums.ExtendedPermissions), permission);
hasPermission = api.Users.HasAppPermission(perm);
由于上面的代码是使用 REST api 从我们的服务器执行的,当移植到新的 sdk 时,我应该不用担心使用 OAuth access_token 吗?
在客户端,当最终用户查看我的网站页面时,当我执行以下 javascript 调用时,一切似乎都正常:
FB.Connect.showPermissionDialog('publish_stream, email, user_checkins', publishToWallPermissionGranted);
function publishToWallPermissionGranted() {
FB.Connect.streamPublish('some share message', null, null, null, false, null);
}
使用上面的客户端代码,我没有存储 access_token 或做类似的事情,但我为什么能够成功地验证、授权和发布到用户的流?
如果我应该使用 Oauth 获取访问令牌(即,如果用户正在使用我的画布应用程序)或者我应该简单地使用我的 appId 来初始化进行客户端 api 调用或我应该获取应用程序访问令牌时的 javascript FB 对象(即 FB.init())。
谢谢!
【问题讨论】:
标签: .net facebook facebook-c#-sdk