最近在和国内的团队开发温哥华知道的安卓版本,有个问题困扰了我挺久。今天查出了原因,也学了一点小东西。

由于这是一款新闻资讯应用,开发后端时就借用了WordPress的框架。一来方便小编写文章,二来WordPress出色的模块如标签系统、用户系统、评论系统等,节省不少开发时间。

国内的团队反映用户登录后进行操作时,总是遇到用户未登录或登录过时的错误。使用同样的数据发送请求,我们这边却没有任何问题。

登录使用wp_signon(),var_dump($current_user)时就是已登录用户的详情。国内团队反应$current_user是空。我在使用wp_set_current_user()将登录用户设为$current_user后,问题就解决了。

才怪!哪有那么容易…今天温哥华这边快下班了,国内刚起床的弟兄们试了一下,登录是成功了,但用户进行登录后的操作时依然提示登录过期。

在公司使用Mac机,由于使用Postman未能重现问题,我回家用自己的PC下载了他们使用的Fiddler,终于知道问题所在:应该是cookie的问题。用户登录后,服务器会返回一个wordpress_logged_in_******的cookie,我在手动添加cookie发送新的请求时,问题迎刃而解。和国内团队沟通,才知道他们在客户端并没有保存cookie。

客户端保存cookie信息,每次用户进行登录后相关的操作时,后端可以通过WordPress function wp_set_auth_cookie() 来延长cookie有效期,这样用户也不用一再重复登录了。

同时为iOS和安卓提供后端服务支持,这也让我学了不少东西。iOS下运行正常的接口到安卓时,还得进行部分调整。以后再做类似的事情时也就少走一些弯路了。

 

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s