请问 Android 要怎样实现持久化登录啊?

2016-11-21 11:45:15 +08:00
 coluo
求高手分解一下,目前实现的方法是 Android 拿到后台返回的 cookie ,保存在本地,下次用户打开 APP 的时候就用之前保存的 cookie 去请求,可以实现持久化登录。

但不晓得为什么在某些机型上面,还是会出现无法持久化登录的问题,求高手给点思路,谢谢了!
11357 次点击
所在节点    Android
20 条回复
ifane
2016-11-21 12:21:23 +08:00
一些手机会无法持久化 Cookie,我觉得可能是下面我碰到的那种情况,而和手机无关。
你是不是模拟登录爬取一些数据。我也出现过这种情况
我个人猜测,是 Cookie 到期了,
Cookie 的有效期是看服务器那边怎么设定的。有的网站用户不执行操作, Cookie 就会过期。
所以经常会有过了几天,就要重新登录。
maijiawei
2016-11-21 12:24:00 +08:00
access token
Chrisplus
2016-11-21 13:14:07 +08:00
都说了是某些机型,就是他们的持久化出问题了呗。
coluo
2016-11-21 13:40:17 +08:00
@ifane 应该不会,因为后台 cookie 有效期设置的是 30 天,但出现这个问题的机器,一天要重新登录好几次。
coluo
2016-11-21 13:42:11 +08:00
@maijiawei 意思是要用 oauth 交换数据?
814084764
2016-11-21 13:42:42 +08:00
首先确认一下是不是 cookie 没有保存下来。如果没有保存下来,就找出元婴。如果保存下来了,再看 cookie 是否有问题,超时?调用不对?。
coluo
2016-11-21 13:42:56 +08:00
@Chrisplus 你是指用户机器的问题吗? 但是出问题的机器登录微信、 QQ 这些软件又是正常的
coluo
2016-11-21 13:44:25 +08:00
@814084764 我抓包的时候发现接口里面是有 cookie 的,也就是说 cookie 是保存成功了的。
coluo
2016-11-21 14:45:54 +08:00
@814084764 按理说 cookie 保存成功,然后去访问接口,接口验证不过,问题应该是在后台,但又不是每一台机器都这样,就有点让人摸不到头脑
xzwc
2016-11-21 15:05:51 +08:00
看看是否过期了,带着这个 cookie 参数去请求服务器,看返回啥结果,如果服务器做容错处理的话应该很容易排查到错误了
Chrisplus
2016-11-21 15:22:41 +08:00
@coluo 看了你的描述,你的后端在验证的时候,除了 cookie 是否还向设备请求了其他信息,如 device id , imei 等等做设备认证?如果是以上情况的话,有些机型(华强北)可能是无法提供正确信息的,以导致验证一直不过。具体在后台看看就可以了
winglight2016
2016-11-21 15:25:46 +08:00
如果是自己的后台服务,那么通常的做法是使用 tokenid 而不是 cookie ,用 cookie 是浏览器的做法,不是 APP 的
koche
2016-11-21 16:02:25 +08:00
token authentication
coluo
2016-11-21 16:09:06 +08:00
@Chrisplus 谢谢,但不是这个情况,后台只是记录了 deviceid 、设备信息、版本等,但没用这个做登录判断。
coluo
2016-11-21 16:10:22 +08:00
@winglight2016 恩,主要是后端还需要兼顾到 web 端;
iFlicker
2016-11-21 16:10:44 +08:00
大概稳妥一点的话。。移动端都是 token ?
coluo
2016-11-21 16:11:35 +08:00
@iFlicker 是的
GhostFlying
2016-11-21 16:22:28 +08:00
自己的服务的话,看下失效后客户端请求带的参数?以及持久化写的是哪里?应用存储?
winglight2016
2016-11-22 10:10:43 +08:00
@coluo 现在后台不都 API 化了吗?是 web 跟 APP 兼容,而不是反过来
zjsxwc
2016-11-22 11:24:16 +08:00
没有持久化登录,都是 app 本地保存密码,发现没登录就自动刷登录接口刷新 cookie ,以前给手机端写过刷登录 cookie 服务端接口

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/322030

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX