令人讨厌我一直试图解决这个问题好几个小时,每个答案都没有直接解决方案:
{
"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
}
}
我一直在撞墙!我正在使用facebook soap客户端进行此http://pastebin.com/G7ysgbdX
这将允许我们(通过用户的许可)整合他们的时间表。 Facebook表示网址不匹配。我该如何测试?
这在本地工作,但在服务器上没有完全相同的代码,除了http://free-rsvp.com/而不是localhost:53111 /
这是以下网址。我看不出任何错误!
任何建议都将受到赞赏。
provider_%3dFacebookPro%26_ SID _%3da80359b555c54b8f8d2f4f8e803f9125&安培; client_secret = 212360b3ea6478fd0a0491e736b54256&安培;代码= AQCyTDStiB5gsQpKMx4uI1yFesVnLnWfE3u70VsB02-4HSyUCTbcf_3oHMo7QQI2as_pw1tpFONs8tClq4FxCr4AzuCMzLBsRnyOM3dcattTATdU-ahq5cjr4lPJNp2gkTrpgWUmqDEVQ8PBvYFB1LdWJpojxRIC24lv0GkQSSqdrct41UGHfDjhnPfI1mV945NgVJSfebhJP7O0GWxP9o9g_4svDCKa2LtCRbo7nDfWLeiE9fGULhmuJDjefAFZ5VMiYj8SrA4QtZXIu8jUQSQT89VYEP8PuG2hS_wMr0TL_GmcvEhNzQ8psPpPWFYhmSo"> HTTPS://graph.facebook.com/oauth/access_token? CLIENT_ID = 523007704381837&安培; REDIRECT_URI = HTTP%3A%2F%2ffree-rsvp.com%3A80%2fAccount%2fExternalLoginCallback%3fReturnUrl%3D%252FDashboard%26_ 提供商 _%3dFacebookPro%26_ SID _%3da80359b555c54b8f8d2f4f8e803f9125&安培; client_secret = 212360b3ea6478fd0a0491e736b54256&安培;代码= AQCyTDStiB5gsQpKMx4uI1yFesVnLnWfE3u70VsB02-4HSyUCTbcf_3oHMo7QQI2as_pw1tpFONs8tClq4FxCr4AzuCMzLBsRnyOM3dcattTATdU-ahq5cjr4lPJNp2gkTrpgWUmqDEVQ8PBvYFB1LdWJpojxRIC24lv0GkQSSqdrct41UGHfDjhnPfI1mV945NgV JSfebhJP7O0GWxP9o9g_4svDCKa2LtCRbo7nDfWLeiE9fGULhmuJDjefAFZ5VMiYj8SrA4QtZXIu8jUQSQT89VYEP8PuG2hS_wMr0TL_GmcvEhNzQ8psPpPWFYhmSo
修改 把我带到facebook的网址是:
provider_%253DFacebookPro%2526_ SID _%253Dbfe82f104ab34d1aa0f44c477c4d7819%26scope%3Demail%252Cuser_likes%252Cfriends_likes%252Cuser_birthday%252Cpublish_checkins%252Cpublish_stream%26client_id%3D523007704381837%26ret%3Dlogin&安培; cancel_uri = HTTP%3A%2F% 2Ffree-rsvp.com%2FAccount%2FExternalLoginCallback%3FReturnUrl%3D%252FDashboard%26_ 提供商 _%3DFacebookPro%26_ SID _%3Dbfe82f104ab34d1aa0f44c477c4d7819%26error%3Daccess_denied%26error_code%3D200% 26error_description%3DPermissions%2Berror%26error_reason%3Duser_denied%23_%3D_&安培;显示=页面"> HTTPS:?//www.facebook.com/login.php skip_api_login = 1&安培; API_KEY = 523007704381837&安培; signed_next = 1&安培;下一= HTTPS%3A%2F%2Fwww.facebook.com%2Fdialog%2Foauth%3Fredirect_uri%3Dhttp%253A%252F%252Ffree-rsvp.com%252FAccount%252FExternalLoginCallback%253FReturnUrl%253D%252FDashboard%2526_ 提供商 _ %253DFacebookPro%2526_ SID _%253Dbfe82f104ab34d1aa0f44c477c4d7819%26scope%3Demail%252Cuser_likes%252Cfriends_likes%252 Cuser_birthday%252Cpublish_checkins%252Cpublish_stream%26client_id%3D523007704381837%26ret%3Dlogin&安培; cancel_uri = HTTP%3A%2F%2Ffree-rsvp.com%2FAccount%2FExternalLoginCallback%3FReturnUrl%3D%252FDashboard%26_ 提供商 _%3DFacebookPro %26_ SID _%3Dbfe82f104ab34d1aa0f44c477c4d7819%26error%3Daccess_denied%26error_code%3D200%26error_description%3DPermissions%2Berror%26error_reason%3Duser_denied%23_%3D_&安培;显示=页
答案 0 :(得分:0)
这是我的服务器端身份验证代码(MVC4项目)。你应该看看的部分是如何在“Authorize”和“AuthorizeCallback”函数中生成重定向URL - 相同 - 并传递给facebook客户端:
[HttpPost]
public ActionResult Authorize(Guid eventId)
{
var @event = this.eventRepository.Find(eventId);
var redirectUri = ConfigurationProvider.HostingEndpoint + this.Url.Action("AuthorizeCallback", new { eventCode = @event.Code });
var service = new FacebookClient();
var loginUrl = service.GetLoginUrl(new {
client_id = ConfigurationProvider.FacebookAppId,
client_secret = ConfigurationProvider.FacebookAppSecret,
redirect_uri = redirectUri,
response_type = "code",
scope = "manage_pages, publish_actions, user_photos, publish_stream" // Add other permissions as needed
});
return new RedirectResult(loginUrl.AbsoluteUri, permanent: false);
}
public ActionResult AuthorizeCallback(string code, string eventCode, UserProfile userProfile)
{
var @event = this.eventRepository.Find(eventCode);
if (string.IsNullOrWhiteSpace(code) == true)
{
// means user clicked "cancel" when he was prompted to authorize the app
// todo: show some error message? or just redirect back?
return this.RedirectToAction("Event", "Dashboard", new { eventCode = @event.Code, feature = FeatureType.Update });
}
var redirectUri = ConfigurationProvider.HostingEndpoint + this.Url.Action("AuthorizeCallback", new { eventCode = @event.Code });
var fb = new FacebookClient();
dynamic result = fb.Post("oauth/access_token", new
{
client_id = ConfigurationProvider.FacebookAppId,
client_secret = ConfigurationProvider.FacebookAppSecret,
redirect_uri = redirectUri,
code = code
});
var accessToken = result.access_token;
// update the facebook client with the access token so
// we can make requests on behalf of the user
fb.AccessToken = accessToken;
// Get the user's information
dynamic me = fb.Get("me");
return this.RedirectToAction("Event", "Dashboard", new { eventCode = @event.Code, feature = FeatureType.Update });
}