使用ASP.Net MVC 4 auth验证验证码问题时出错

时间:2013-12-02 07:39:01

标签: asp.net-mvc-4 facebook-graph-api oauth facebook-c#-sdk

我正在开发一个Asp.Net MVC4应用程序,允许应用程序代表他们在用户的墙上发布一些数据。我正在使用MVC4附带的内置oAuth支持。当我读到默认的oAuth库没有提供添加范围的功能时,为了解决这个问题我跟着this stackoverflow question

但是我进一步面临着facebook graph api抛出此异常的障碍:

{
   "error": {
      "message": "Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request",
      "type": "OAuthException",
      "code": 100
   }
}

当我搜索此问题时,我发现this solution 但即使在最后放置“/”也无法解决问题,而且我一直都会遇到同样的错误。 我有oAuth对话框:

  

https://www.facebook.com/login.php?skip_api_login=1&api_key=431734730282664&signed_next=1&next=https%3A%2F%2Fwww.facebook.com%2Fdialog%2Foauth%3Fredirect_uri%3Dhttp%253A%252F%252Flocalhost%253A1724%252FAccount%252FExternalLoginCallback%253F__provider__%253Dfacebook%2526__sid__%253D038708985bbe463e89cfb8914a19d810%26scope%3Dpublish_stream%26client_id%3D4317347****82664%26ret%3Dlogin&cancel_uri=http%3A%2F%2Flocalhost%3A1724%2FAccount%2FExternalLoginCallback%3F__provider__%3Dfacebook%26__sid__%3D038708985bbe463e89cfb8914a19d810%26error%3Daccess_denied%26error_code%3D200%26error_description%3DPermissions%2Berror%26error_reason%3Duser_denied%23_%3D_&display=page

并从图表api

返回url
  

https://graph.facebook.com/oauth/access_token?client_id=431734730282664&redirect_uri=http://localhost:1724/Account/ExternalLoginCallback?__provider__=facebook&__sid__=038708985bbe463e89cfb8914a19d810&client_secret=1fd7c90f*******6d9cc58e85e01a&code=AQBBS8U3xi31n8yh0dtJaOtG9YEuLKP**********mk_SPrEDwh7rJbGPuyOehI7Buo4wSMK8******igIl4VaRW5mQ5cE3YnXn4adkmP7tD0_JRT-SRDa_5PyKfknfQ5sRK7t6d0Ng4pccPSyeDJoUiZ7jWKfY-Sq-2LlaXkiJW5cYWiPtjAeXLPGvcSnMw91edwe41S-qdg9Lu5XTijEN3mMC8onPv86t802NhDs0sTFscWoGjxQEE9kioK5-0BnR384qrI7DGNf_oAIb88L83Z_mITvnv_dkq265lZztmkkOt0

我没有发现重定向uri之间的区别,因为文档说两个网址中的重定向uri必须相同。 有人可以建议一个解决方案吗?

1 个答案:

答案 0 :(得分:0)

我想知道我遇到了同样的问题,但这是由于不同的原因造成的。 显示的返回路径不同,但它们必须完全相同,如下所示。

第一个对应于:

  

http://localhost:1724/Account/ExternalLoginCallback?__provider__=facebook&__sid__=038708985bbe463e89cfb8914a19d810

另一方面,第二个是:

  

http://localhost:1724/Account/ExternalLoginCallback?__provider__

使用js decoder解析这些值,然后在检查的chrome网络调试器上解析。

如果您在第二个网址中注意,您可能会注意到网址路径未正确编码。

字符'/',':','&',';'并且第一个网址中的“=”无法读取,而第二个网址中的“=”则无法读取。

要解决此问题,您可能需要对其进行编码。

可能对HttpServerUtility.UrlDecode有用。