Azure Mobile Service从FourSquare接收403 HTTP异常

时间:2015-12-28 21:24:12

标签: azure-mobile-services foursquare

我有一个非常奇怪的问题,我希望有人可以把我送到正确的方向。我会尝试尽可能多地提供信息,但如果我错过任何重要的信息,我将非常乐意提供额外的信息。

我正在尝试从Azure移动服务.Net后端向FourSquare API发出请求,但我收到“远程服务器返回错误:(403)”并不重要我做什么!我用来测试的URL如下。我正在使用一个非常基本的请求URL进行测试,以尽量减少查询字符串参数的任何问题。我还创建了一个临时的FourSqaure应用程序,以便我可以提供此帖子的确切URL。

https://api.foursquare.com/v2/venues/categories?client_id=RGRB1T4E2XZN5FMT51VRTSB5VC4AH3HHYJJT5KF5HXFMPK5P&client_secret=0XKMB2ZPUVE1W2MICTNG0ETJPETDNDSNQCVB32WTBBHKNRIC&v=20151021

如何工作是有一个AngularJS Web客户端向Azure移动服务API提出请求。然后,移动服务向FourSquare API发出请求,并将结果返回给AngularJS客户端。 所以这就是发生的事情: 1.在我的开发机器上从Mobile服务向FourSquare提出请求时,它工作正常 2.当将来自Google Chrome中的其他REST客户端的请求发送到FourSquare API时,它可以正常工作 3.在本地计算机上从.Net控制台应用程序发出请求时,它可以正常工作。我添加了下面创建的请求,使用Fiddler捕获。 4.从控制台应用程序(如下所示)中获取完全相同的代码并将其添加到Azure移动服务时,它将返回403错误。 Azure门户中记录了错误的详细信息,因此我知道客户端已成功连接到移动服务,并且403来自WebRequest。

Fiddler Request(在本地工作):

GET https://api.foursquare.com/v2/venues/categories?client_id=RGRB1T4E2XZN5FMT51VRTSB5VC4AH3HHYJJT5KF5HXFMPK5P&client_secret=0XKMB2ZPUVE1W2MICTNG0ETJPETDNDSNQCVB32WTBBHKNRIC&v=20151021 HTTP/1.1
Accept: *.*
Content-Type: text/plain; charset=utf-8
Host: api.foursquare.com
Connection: Keep-Alive

控制台应用程序代码(在本地工作但不在云中工作)

Dim request As WebRequest - WebRequest.Create("https://api.foursquare.com/v2/venues/categories?client_id=RGRB1T4E2XZN5FMT51VRTSB5VC4AH3HHYJJT5KF5HXFMPK5P&client_secret=0XKMB2ZPUVE1W2MICTNG0ETJPETDNDSNQCVB32WTBBHKNRIC&v=20151021")

request.Credentials = CredentialCache.DefaultCredentials

With Ctype(request,HttpWebRequest)
   .Accept = "*.*"
   .ContentType = "text/plain; charset=utf-8"
   .Method = "GET"
End With
Dim response As WebResponse = request.GetResponse()
WriteLine(CType(response, HttpWebResponse).StatusDescription)
Dim dataStream As Stream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
WriteLine(responseFromServer)
reader.Close()
response.Close()

关于如何进一步排除故障甚至我做错了什么的任何建议真的很感激!谢谢!

1 个答案:

答案 0 :(得分:0)

FourSquare目前正在阻止从Microsoft Azure服务器发出的请求。我联系他们的支持并不是很期待,特别是在一年的这个时候。他们非常好,很快就回复了我。我甚至在新的一年里收到一封电子邮件说他们已经解决了我的问题。

简而言之,如果您需要从Azure向FourSquare发出请求,请发送电子邮件并询问他们是否可以列出您的IP地址。我现在唯一的批评是他们真的应该在错误回答中加入一些内容告诉你他们在做什么,所以你不要浪费时间追逐你的尾巴。