Silverlight 4.0 Facebook C SDK:Silverlight 4浏览器应用程序中的OAuth 2

Silverlight 4.0 Facebook C SDK:Silverlight 4浏览器应用程序中的OAuth 2,silverlight-4.0,oauth,facebook-c#-sdk,Silverlight 4.0,Oauth,Facebook C# Sdk,我对OAuth的身份验证过程完全是新手,我正试图利用OAuth 2,确切地说,我下面使用Facebook SDK最新版本进行身份验证的示例说,此代码片段应该适用于C.NET环境: 由于我正在编写浏览器SL应用程序,WebBrowser控件不显示任何内容,因此我也无法捕获响应,我如何在我的应用程序中执行与此等效的操作?或者,如果没有等效的方法,我如何完成身份验证过程?谢谢 一个建议:为什么不在收到WebResponse时尝试解析它,而不是监听事件 我在我的web应用程序中使用Facebook OA

我对OAuth的身份验证过程完全是新手,我正试图利用OAuth 2,确切地说,我下面使用Facebook SDK最新版本进行身份验证的示例说,此代码片段应该适用于C.NET环境:


由于我正在编写浏览器SL应用程序,WebBrowser控件不显示任何内容,因此我也无法捕获响应,我如何在我的应用程序中执行与此等效的操作?或者,如果没有等效的方法,我如何完成身份验证过程?谢谢

一个建议:为什么不在收到WebResponse时尝试解析它,而不是监听事件

我在我的web应用程序中使用Facebook OAuth。它只是一系列带有正确参数的URL帖子

看看这篇文章:所有的细节都在答案和评论中

以下是简单的步骤:

使用您的AppId、重定向URL和权限调用FacebookOAuth对话框URL。请求类型应为代码 当用户登录并授权您的应用程序时,他们将被重定向到带有code querystring参数的重定向url。 获取code参数的值,然后再次调用Facebook以获取令牌。 使用此令牌代表用户进行呼叫。
我按照这些步骤完成了身份验证过程,但是将request_type设置为token,谢谢!我强调代码的唯一原因是出于安全考虑。令牌请求类型嵌入在查询字符串中,因此不安全。它很容易被拦截。对于代码,您必须进行另一次POST调用才能获得令牌,这更安全。您也可以使用state参数来提高安全性。我会尝试一下,如果它也适用于我,按照您的建议,以代码形式声明请求类型,谢谢。我现在正在研究这个问题,但我不确定是否存在安全问题,可能我还没有真正理解这个过程,我的意思是,我在Silverlight客户端中设置了响应类型和其他参数,在这里我也向Facebook API发出了第一个请求,但我设置的回调url是服务器端的一个aspx页面,在服务器端,我通过JavaScript函数获取url以返回Silverlight客户端。因为即使我将请求类型设置为代码,我将在我的aspx页面中捕获响应,稍后通过调用JavaScript函数将其传递到silverlight客户端页面,就像我将其设置为token时直接做的那样,使用代码如何利用更好的安全性?虽然您又进行了一次POST调用,但最终的响应将以相同的格式发送到相同的回调url,不是吗?那么,它是否不像所述的令牌请求类型那样可拦截?
webBrowser.Navigate(loginUrl);

private void webBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
    FacebookOAuthResult result;
    if (FacebookOAuthResult.TryParse(e.Url, out result))
    {
       if (result.IsSuccess)         
       {
         var accesstoken = result.AccessToken;          
       }

       else
       {
         var errorDescription = result.ErrorDescription;
         var errorReason = result.ErrorReason;
       }
    }
}