我正在将我的C#ASP.NET MVC 4 facebook登录转换为VB ASP.NET MVC 2版本项目。
不幸的是我收到了这个错误,我无法弄清楚问题是什么。
主要错误:错误请求400错误。 更详细的错误:
WWW-Authenticate:OAuth“Facebook平台”“invalid_code”“验证验证码时出错。请确保您的redirect_uri与您在OAuth对话框请求中使用的redirect_uri相同”
控制器:
<HttpPost> _
<AllowAnonymous> _
Public Function ExternalLogin(provider As String, returnUrl As String) As ActionResult
Return New ExternalLoginResult(provider, Url.Action("ExternalLoginCallback", New With { _
Key .ReturnUrl = returnUrl _
}))
End Function
Public Function ExternalLoginCallback(returnUrl As String) As ActionResult
Dim result As AuthenticationResult = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", New With { _
Key .ReturnUrl = returnUrl _
}))
' Eind resultaat krijg je hier
If result.IsSuccessful Then
' Temporary Properties
Dim strTempGeslacht As String = result.ExtraData("gender")
' Properties
Dim strVoornaam As String = result.ExtraData("firstname")
Dim strAchternaam As String = result.ExtraData("lastname")
Dim strEmail As String = result.ExtraData("email")
Dim strGeboortePlaats As String = result.ExtraData("hometown")
Dim strWoonplaats As String = result.ExtraData("location")
Dim arrayWerk As String() = result.ExtraData("work").Split("*"C)
Dim intGeslacht As Integer = If(strTempGeslacht = "male", 0, 1)
Dim intOpenID As Int64 = Int64.Parse(result.ProviderUserId)
Dim CiDutch As New CultureInfo("nl-NL", False)
Dim strBirthday As String = String.Format("{0:dd/MM/yyyy}", result.ExtraData("birthday"))
' Redirect
Return RedirectToAction("Facebook", "Bedankt")
End If
' Error
Return RedirectToAction("Index", "Home")
End Function
Friend Class ExternalLoginResult
Inherits ActionResult
Public Sub New(provider__1 As String, returnUrl__2 As String)
Provider = provider__1
ReturnUrl = "http://localhost:25806/Facebook/ExternalLoginCallback"
End Sub
Public Provider As String
Public ReturnUrl As String
Public Overrides Sub ExecuteResult(context As ControllerContext)
OAuthWebSecurity.RequestAuthentication(Provider, ReturnUrl)
End Sub
End Class
End Class
Query Acces Token(使用downloadstring时出现错误)
protected override string QueryAccessToken(Uri returnUrl, string authorizationCode)
{
WebClient client = new WebClient();
string url = string.Format("{0}?client_id={1}&client_secret={2}&redirect_uri={3}&code={4}", TokenEP, this._appId, this._appSecret, HttpUtility.UrlEncode(returnUrl.ToString()), authorizationCode);
string content = client.DownloadString(url);
NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(content);
if (nameValueCollection != null)
{
string result = nameValueCollection["access_token"];
return result;
}
return null;
}
查询网址:
"https://graph.facebook.com/oauth/access_token?client_id=607648425938521&client_secret=ff099b80cc19da0ec0870df99fa465b0&redirect_uri=http%3a%2f%2flocalhost%3a18774%2fvacatures%2fExternalLoginCallBack%3f__provider__%3dfacebook%26__sid__%3d3dda4b1db178404094cbeef339d414b9&code=AQAAHJ0UoPjqvtOLjgUJ7ipzY0j7-8FxoTx7nt_Vxq9FD0cN-DhVH8BclofFEXPsPU7Fm1YHKGSlJRcLGedHSA23sVpkbssBp5yQo3PmBkUSZ9LBuckKrkjagvz4HkgFQ_oX2DoEPDmpkKo8O97GYlBt7j185SncBcpmbi8I7DNs9Z8wGP_FGQb8Mh6iMz3SH4IB1Ae3OppthmRXEJOj9k7xiboPsAYTf3w7E6MhWU3uNnR-SfA5RkSXkLas7xUnKF7eqmPM9_3pAMj2ObOAA1e4dcKke-QABo_FGx7LV0OY1pEeKIbbu9Ag5h0SBqmGi9k
所有链接都与工作项目C#mvc 4相同。
答案 0 :(得分:6)
6小时,我花了6个小时试图找出问题所在。
这只是一个大写字母B,我做了第一个请求:ExternalLoginCallback和第二个请求:ExternalLoginCallBack
我同时感到高兴和悲伤,哈哈!
答案 1 :(得分:1)
我怀疑这实际上与.NET没有任何关系。在您的代码中,您有
ReturnUrl = "http://localhost:25806/Facebook/ExternalLoginCallback"
但是,您提供的查询网址中的值为
http://localhost:18774/vacatures/ExternalLoginCallBack
在facebook.com上的Facebook应用程序设置中,有一个返回URI字段。这个值可能与你在这里有所不同。您必须更改其中一个以使它们匹配。这就是错误所解释的。