最初,我使用的是这里找到的Facebook .NET SDK:
http://facebooktoolkit.codeplex.com/
但现在,我正在尝试迁移到下面托管的最新版本,并实现了许多最近推出的Facebook功能:
http://facebooksdk.codeplex.com/
虽然我已经构建了一些Facebook画布应用程序,甚至将我们公司的网站集成到了Facebook Connect中,但我仍然对Facebook身份验证/授权更改的细微差别和详细信息感到有些困惑。例如,我如何将下面的.NET服务器端代码从旧版(v3.0).NET SDK集成与Facebook迁移到新的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 APIs 从我们的服务器执行的,当迁移到新的 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来获取访问令牌(例如,如果用户正在使用我的画布应用程序),或者在进行客户端API调用时应该什么时候简单地使用我的appId来初始化JavaScript FB对象(即FB.init()),或者应该获取应用程序访问令牌。
谢谢!