假设我有一个连接到.Net API的Android应用程序,用于接收/设置数据.我所遇到的困惑是关于如何在每次向API发出请求时第一次注册/登录用户并对其进行身份验证.
还有哪些其他模式可用,哪些模式最有效和最安全,我只需要一个流程.有人能告诉我Facebook,FourSquare或Twitter等着名的Android应用程序使用什么方法来验证从他们的移动应用程序到他们的服务器的每个请求?
如果这不是一些公开信息,请提前抱歉.
Foursquare API已将用户的照片标记划分为前缀和后缀.但是,如果我合并它们以形成完整的图像URL并将其粘贴到我的浏览器中,则会给出错误,指出图像无法显示,因为它包含错误.是因为服务器暂时不可用还是其他什么?
我正在使用场地细节的API.
我得到了这样的数据
user: {
id: "26534686"
firstName: "Bobbi"
lastName: "E."
photo: {
prefix: "https://irs3.4sqi.net/img/user/"
suffix: "/K4VCI4MXHWFUGXOF.jpg"
}
}
visibility: "public"
Run Code Online (Sandbox Code Playgroud)
但是,当我打电话给这个网址https://irs3.4sqi.net/img/user/K4VCI4MXHWFUGXOF.jpg给我错误.
任何线索?
我正在尝试解析来自Foursquare的access_token,其中URL如下所示:
https://mywebsite.com/4sqredirect/#access_token=1234567890XXXXX
我尝试了$ routeParams和$ location并且没有得到任何回报.只有在我尝试$ route之后,我确实得到了一个具有以下属性的对象:
current: {
params: { }
pathParams: { }
loadedTemplateUrl: partials/4sqredirect
locals: { }
scope: {
this: {
$ref: $["current"]["scope"]
}
route: {
$ref: $
}
location: { }
token: null
}
}
Run Code Online (Sandbox Code Playgroud)
这是否意味着无法使用原生的AngularJS函数来获取它?
更新:
我的控制器如下所示:
angular.module('myApp')
.controller('4sqredirectCtrl', function ($scope, $route, $location, $routeParams) {
$scope.route = $route;
$scope.location = $location;
$scope.token = $routeParams.access_token;
});
Run Code Online (Sandbox Code Playgroud)
我的主要js如下所示:
angular.module('myApp', [
'ngCookies',
'ngResource',
'ngSanitize',
'ngRoute'
])
.config(function ($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when('/', {
templateUrl: 'partials/main',
controller: 'MainCtrl'
}) …
Run Code Online (Sandbox Code Playgroud) 我非常喜欢foursquare设计场地细节视图的方式.特别是地图位置在"标题"的视图中......它是如何完成的?细节显然是一些uiscrollview(也许是uitableview?)并且在它后面(在标题中)有一张地图所以当你向上滚动地图时,随着滚动视图反弹而被发现...有没有人知道如何做到这一点?
我从Foursquare的场地搜索API得到了一些不稳定的结果,我想知道是否有人有关于如何处理输入参数以获得最"直观"结果的任何提示.
例如,假设我正在使用Google Maps API在"纽约,纽约"周围搜索名为"Ise Sushi"的场所,该场地相当于(lat:40.7143528,lon:-74.00597309999999).插入Foursquare Venue API,我们得到:
https://api.foursquare.com/v2/venues/search?query=ise%20sushi&ll=40.7143528%2C-74.00597309999999
Run Code Online (Sandbox Code Playgroud)
这会产生相当令人沮丧的结果:我正在寻找的场地最终位于列表的第11位.有趣的是,降低坐标的精度似乎会产生更好的结果.例如,假设我们将坐标舍入为3位有效数字:
https://api.foursquare.com/v2/venues/search?query=ise%20sushi&ll=40.7%2C-74.0
Run Code Online (Sandbox Code Playgroud)
这一次,我正在寻找的场地最终排在第二位,即使它实际上离搜索中心更远(1072米,使用第一个查询时为833米).
另一个似乎有助于提高搜索质量的修改是用下划线代替空格来分隔我们的搜索词.例如,这是带下划线的原始查询:
https://api.foursquare.com/v2/venues/search?query=ise_sushi&ll=40.7143528%2C-74.00597309999999
Run Code Online (Sandbox Code Playgroud)
这产生了最直观的结果:我正在寻找的场地首先出现,并伴随着另一个结果,"伊势餐厅"(被标记为"寿司餐厅").对于它的价值,这实际上似乎是在Foursquare自己的网站上进行的相同搜索的结果集.
我很好奇我应该从中吸取哪些教训.我应该降低坐标的精度吗?我是否应该使用下划线连接我的搜索字词,如果是,那是否会限制用户订购搜索字词的方式?
在看到新的foursquare应用程序的最后截图和他们的气球之类的卡通说明后,我想在我的应用程序中创建其中的一些.
我发现iPhone 小弹出类似问题 的说明......怎么样?
这是foursquare app的另一个截图:
我想知道如何通过Android实现这一目标.
在此先感谢您的帮助.
更新:这是我到目前为止所能得到的,但添加了一些带有自定义绘制背景的按钮,并使用FrameLayout对它们进行分层:
但我仍然无法获得三角效应.也许我的自定义背景形状可以做些什么?
UPDATE2
在检查了你的建议之后,我决定采用Aaron C的想法并添加一个带箭头的图像.这是我目前的结果:
谢谢Snailer,QuickAction API项目似乎非常有希望.在我的应用程序中实现更多功能时,我会检查出来.
现在,我只需要获得正确的颜色,或者我可以这样做.看起来也不错.
因此,总结一下我的所作所为:
当我使用frameview时,我放在这里的所有东西都将堆叠在一起.这就是我可以在布局中添加内容的方法.
在那个framelayout中,我放了2个相对布局,带有三角形的图像和一个按钮来创建两个上部弹出窗口.在底部我只放了一个按钮.
而已.我希望它对某人有所帮助.
再次感谢您的帮助!
为什么我在运行使用Foursquare尝试使用OAuth的应用程序时出现此错误?
import httplib2
ImportError: No module named httplib2
Run Code Online (Sandbox Code Playgroud)
我已按照此处的说明在命令行上安装了httplib2并安装了$ python setup.py install
我错过了什么吗?谢谢
今天我遇到了一个有趣的问题.
我正在使用foursquare推荐的python库httplib2 raise
SSLHandshakeError(SSLError(1, '_ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed'),)
Run Code Online (Sandbox Code Playgroud)
在尝试请求oauth令牌时
response, body = h.request(url, method, headers=headers, body=data)
Run Code Online (Sandbox Code Playgroud)
在
_process_request_with_httplib2 function
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会这样?
我正在尝试重构我的代码以使用Retrofit(来自Volley)进行一些Foursquare API调用,但是没有找到一个正确的示例来说明如何指定具有由逗号分隔的2个值的查询参数.
我的基本网址如下:
public static final String VENUES_BASE_URL = "https://api.foursquare.com/v2/venues";
Run Code Online (Sandbox Code Playgroud)
我的其余网址是这样的:
"?ll=40.7,50.2&limit=50&radius=25000&v=20140909&venuePhotos=1&oauth_token=xxyyxx";
Run Code Online (Sandbox Code Playgroud)
我的界面的第一个实现:
public interface Fourquare {
@GET("/explore?ll={p1},{p2}&limit=50&radius=25000&v=20140905&venuePhotos=1&oauth_token=xxyyxx")
Response getVenues(@Path("p1") String param1,
@Path("p2") String param2);
}
Run Code Online (Sandbox Code Playgroud)
然后提出这样的请求:
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(ConfigConstants.VENUES_BASE_URL)
.build();
Fourquare fourquare = restAdapter.create(Fourquare.class);
Response myResponse = fourquare.getVenues("50", "75");
Run Code Online (Sandbox Code Playgroud)
但是,上面给了我以下错误:
retrofit.RetrofitError: Fourquare.getVenues: URL query string "ll={p1},{p2}&limit=50&radius=25000&v=20140905&venuePhotos=1&oauth_token=xxyyxx" must not have replace block.
Run Code Online (Sandbox Code Playgroud)
第二个实现(在查看一些使用Query参数的SO响应之后.注意:一旦我找到了ll?参数调用,我将把令牌作为参数):
@GET("/explore&limit=50&radius=25000&v=20140905&venuePhotos=1&oauth_token=xxyyxx")
void getVenues(@Query("ll") String ll,
Callback<String> cb);
Run Code Online (Sandbox Code Playgroud)
通过这样的实际调用:
fourquare.getVenues("50,75", new Callback<String>() {
@Override
public void success(String s, Response response) {
Log.d(TAG, "Successful run!"); …
Run Code Online (Sandbox Code Playgroud) 如果您使用Foursquare的API场所/探索来获取特定区域的场地,您可以在响应中获得照片的数量.例如,当您按下API文档中的"试用"按钮时生成的默认查询:
https://api.foursquare.com/v2/venues/explore?ll=40.7,-74
给出类似的东西:
<...>
venue: {
id: "4de1b34ec65b7a3e2109e46f",
name: "Beekman Beer Garden",
<...>
photos: {
count: 371,
groups: [ ],
}
Run Code Online (Sandbox Code Playgroud)
但没有会场的照片网址.
如果您尝试使用场地/照片来检索此场地的照片,您将获得完整的照片列表:
https://api.foursquare.com/v2/venues/4de1b34ec65b7a3e2109e46f/photos?group=venue
响应:
<...>
id: "4fecf72ae4b0f9f20ef5f4ae",
<...>
prefix: "https://irs0.4sqi.net/img/general/",
suffix: "/Ch8l3fTBYzszVoOiDcWoklClo9wbWseLr2ZXBbde4es.jpg",
<...>
id: "4fecd642e4b0f3117eb4d2e3",
<...>
prefix: "https://irs1.4sqi.net/img/general/",
suffix: "/kWzECY2VMssTWex1GNZITP-YlWzWDHZYsV5p2k4tsEk.jpg",
<...>
Run Code Online (Sandbox Code Playgroud)
如您所见,该场地有很多公开照片.
在一些罕见的情况下,场地/探索API似乎包括照片的网址.这是为什么?有没有办法使用/探索为每个场地拍照,而不是/照片?