C# Facebook SDK - 如何使用 Web 表单在服务器端授权画布应用程序

本文关键字:服务器端 授权 应用程序 表单 Web SDK Facebook 何使用 | 更新日期: 2023-09-27 18:32:58

MVC 中有很多示例应用程序,但我正在处理的当前项目要求我使用 Web 表单。

我可以使用javascript方法授权应用程序,但我想使用服务器端。 以下是我在页面上开始的内容.load

dynamic parameters = new ExpandoObject();
parameters.client_id = AppId;
parameters.client_secret = appSecret;
parameters.response_type = "code";
//parameters.state = state;
parameters.redirect_uri = "http://fb.local/page.aspx";
// The requested response: an access token (token), an authorization code (code), or both (code token).
parameters.response_type = "token";
// list of additional display modes can be found at http://developers.facebook.com/docs/reference/dialogs/#display
//parameters.display = "popup";
// add the 'scope' parameter only if we have extendedPermissions.
if (!string.IsNullOrWhiteSpace(ExtendedPermissions))
parameters.scope = ExtendedPermissions;
// generate the login url
var fb = new FacebookClient();
var loginUrl = fb.GetLoginUrl(parameters);
Response.Redirect(loginUrl.AbsoluteUri, true);

我可以授权,但无法从 URL 获取访问令牌。

在下一页上,我可以查看源代码并在 url 栏中看到访问令牌,但我不确定如何将其放入代码中。 一旦我有了令牌,我就准备好了。

page.aspx#access_token=AAACrxQhmdpY

C# Facebook SDK - 如何使用 Web 表单在服务器端授权画布应用程序

我习惯了在我的页面加载和工作时使用此代码,它不是一个非常干净的代码,但您可以弄清楚如何更改它以获得最佳用途。 因此,算法是,当页面加载时,您将用户重定向到Facebook身份验证页面,使用response.redirect到包含三个参数的字符串:您的应用程序ID(appID(,您向用户询问的权限(范围(,您希望Facebook在授权后将用户重定向到何处,以及一个参数作为状态,我想它应该是一个随机数。因此,在用户授权您的应用程序后,他/她将被重定向到您的页面,其中包含一个请求 URL,其中包含您准备 Facebook 的相同状态(如果我猜有很多请求,您可以使用该 URL 来识别谁是哪个请求(以及一个新的"代码"参数,您将其传递给 Facebook 以获取访问令牌, 您可以使用Facebook C# SDK获取访问权限 token.in 我的代码中,有一行说"如果代码不为空,请转到Alireza",Alireza是response.redirect代码后面的行标记,这是因为您不希望该过程一遍又一遍地重复(当然浏览器可能会显示错误(。

        int intstate;
        string strstate;
        string redirecturltofb;
        string scope;
        string appid;
        code = Request.QueryString["code"];
        if (!String.IsNullOrWhiteSpace(code))
        {
            goto alireza; 
        }
        appid = "424047057656831";
        scope = "user_about_me,user_activities,user_groups,email,publish_stream,user_birthday";
        intstate = 45; 
        strstate = Convert.ToString(intstate);
        redirecturltofb = "https://www.facebook.com/dialog/oauth?client_id=" + appid + "&redirect_uri=http://test5-2.apphb.com/&scope=" + scope + "&state=" + strstate;
        Response.Redirect(redirecturltofb);

您必须使用 Javascript SDK 将访问令牌获取回代码隐藏。

使用FB。初始化如 http://csharpsdk.org/docs/web/getting-started

并在某些条件下回发以获取访问令牌。

谢谢

达曼德拉