我正在开发一个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必须相同。 有人可以建议一个解决方案吗?
答案 0 :(得分:0)
我想知道我遇到了同样的问题,但这是由于不同的原因造成的。 显示的返回路径不同,但它们必须完全相同,如下所示。
第一个对应于:
http://localhost:1724/Account/ExternalLoginCallback?__provider__=facebook&__sid__=038708985bbe463e89cfb8914a19d810
另一方面,第二个是:
http://localhost:1724/Account/ExternalLoginCallback?__provider__
使用js decoder解析这些值,然后在检查的chrome网络调试器上解析。
如果您在第二个网址中注意,您可能会注意到网址路径未正确编码。
字符'/',':','&',';'并且第一个网址中的“=”无法读取,而第二个网址中的“=”则无法读取。
要解决此问题,您可能需要对其进行编码。