1

当用户安装应用程序时,页面会在没有初始 GET 参数的情况下被重定向。

例如:

  1. 用户使用链接打开应用程序:http://apps.facebook.com/[app]/?request_ids=123&fb_source=wall
  2. 此应用未安装,因此 Facebook 重定向到页面:https://www.facebook.com/dialog/oauth?client_id=[app]redirect_uri=http://apps.facebook.com/[app]/?scope =user_about_me,email&response_type=code
  3. 用户确认必要的权限后,他被重定向到页面:https://apps.facebook.com/[app]/?code=[authorization code]

在最终 url 中缺少初始 GET 参数,因此我无法检测到用户从哪个 URL 访问我的应用程序。

我使用以下 C# 代码生成登录 url:

dynamic parameters = new ExpandoObject();
parameters.client_id = _configuration.AppId;
parameters.redirect_uri = _configuration.CanvasUrl;
parameters.scope = String.Join(",", accessScope);
parameters.response_type = "code";
return _facebookClient.GetLoginUrl(parameters);

我不能在 parameters.redirect_uri 值中使用 GET 参数(Facebook 错误 - URL 不正确)。

请建议我如何使用初始 GET 参数。

4

1 回答 1

0

您需要redirect_uri在身份验证的两个步骤中使用相同的参数 -

尽管您在那里没有包含足够的信息,但我怀疑身份验证对话框正在加载,用户正在接受它,但是您尝试交换codeanaccess_token失败了,因为您没有使用相同的 redirect_uri (带有参数)

于 2012-08-02T09:43:11.500 回答