2011-02-16 94 views
3

原来我使用Facebook上的.NET SDK在这里找到:从旧的(V3.0)Facebook的净SDK迁移到最新版本(V5.0)

http://facebooktoolkit.codeplex.com/

,但现在,我试图迁移到其下面主办,最新版本实现了许多与最近的新的Facebook功能:

http://facebooksdk.codeplex.com/

即使我已经建立了几个Facebook的帆布应用程序,甚至集成了我们公司网站使用fa cebook连接,我仍然对关于Facebook认证/授权更改的细节和细节感到困惑。例如,我将如何将我从旧的(v3.0)与Facebook的.NET SDK集成中使用的以下.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来初始化javascript FB对象(即FB.init())在进行客户端API调用时或者我应该获取应用程序访问令牌时。

谢谢!

回答

0

经过一些调查和反复试验,这里是我用过的集成了最新的.NET SDK的Facebook

var httpContext = new System.Web.HttpContextWrapper(System.Web.HttpContext.Current); 
var auth = new Facebook.Web.Authorizer(Settings.FBAppId, Settings.FBConnectAPISecret, (System.Web.HttpContextBase) httpContext); 
Facebook.FacebookClient fbApp = null; 
if (auth.Session != null && auth.Session.AccessToken != null) 
{ 
    fbApp = new Facebook.FacebookClient(auth.Session.AccessToken); 
} 
isLoggedIntoFacebook = auth.IsAuthorized(); 
var me = fbApp.Get("me"); 

的伎俩是,我不得不使用授权者类真正找出如果用户登录到Facebook和连接到我的外部网站。我不知道授权人是如何工作的,但我的猜测是,它会查看cookie以查明用户是否登录Facebook(因为httpContext已传入授权人)。然后,假设用户登录Facebook并授权我的应用程序,我的服务器端代码可以从Authorizer对象获取AccessToken以创建一个新的FacebookClient,它可以轻松地调用图api。

在我的情况下,我使用FB JS SDK弹出对话框,将用户登录到Facebook,然后我的服务器端代码只是检查以确保用户登录,然后调用graphy apis来获取信息我在服务器上使用。

我希望这可以帮助别人。

0

不幸的是,由于Facebook修改了他们的API/SDK产品,旧的.NET SDK(微软吹捧)被抛弃了。

我想象你上了年纪的Facebook的JavaScript SDK(http://developers.facebook.com/docs/reference/oldjavascript/)

展望未来,你很可能希望访问Facebook图形API。

这将需要更新您的客户端JavaScript SDK和您的服务器端(Facebook C#).NET SDK。

如果您的应用程序只是简单地发布到新闻传播,那么您可以通过使用JavaScript调用,而无需服务器端.NET SDK相处。但是,如果你想创建一个Canvas应用程序,将用户登录到你的网站等,你还需要升级到Facebook C#SDK。)

+0

大多数情况下,我可以使用我们网站上的Javascript SDK(调用FB.ui()来显示权限对话框等),但是我们网站上有一些功能依赖于使REST API调用Facebook以检索信息。现在,我的任务是集成新的.net Facebook SDK,我很困惑如何使用.net sdk获得有效的会话并获取有关用户的信息(即,用户授权我的Facebook启用了哪些权限网站)。 – Deven

相关问题