0

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

我可以使用 javascript 方法授权应用程序,但我想使用服务器端。以下是我在 page.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
4

2 回答 2

1

我曾经在我的页面加载和工作时使用过这段代码,它不是一个非常干净的代码,但你可能会想出如何更改它以最好地使用它。所以算法是,当页面加载时,您使用 response.redirect 将用户重定向到 Facebook 身份验证页面,该字符串包含三个参数:您的应用 ID(appid),您要询问用户的权限(范围),您想要的位置Facebook 在授权后重定向用户,以及一个参数作为状态,我猜它应该是一个随机数。因此,在用户授权您的应用程序后,他/她将被重定向到您的页面,请求 URL 包含您准备 Facebook 时使用的相同状态(如果我猜有很多请求,您可以使用它来识别哪个请求是哪个请求)还有一个新的“代码”参数,您将其传递给 Facebook 以获取访问令牌,

        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);
于 2012-11-08T09:06:18.897 回答
0

您必须使用 Javascript SDK 将访问令牌返回给后面的代码。

http://csharpsdk.org/docs/web/getting-started中使用FB.Init

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

谢谢,

达门德拉

于 2012-05-18T11:41:03.900 回答