不同于浏览器和手机的结果


Different result from browser and from mobile

我们有一个wordpress网页,我们想用它为iOs和android制作一个小应用程序。所以我刚刚做了一个API。电话程序员是一个自由职业者,所以现在我还没有她的代码,所以这个问题可能会被专门讨论,但也许你们中的一些人会知道答案,如果我告诉你,我做了什么。

这个API中有几种方法,但所有这些方法(除了登录)都需要经过身份验证的用户。

所以我提出了这样的请求(现在是一个工作链接):http://anydomain.com/service/app_request.php?request=login&用户名=xxx&密码=yyy&trid=zzz

这个脚本以一个:开始

session_start();
include('../wp-load.php');

所以当她用正确的凭据调用脚本时,我会登录。

    $creds = array();
    $creds['user_login'] = $this->getVars['username'];
    $creds['user_password'] = $this->getVars['password'];
    $creds['remember'] = false;
    if (is_ssl()) {
        $secure_cookie = true;
    } else {
        $secure_cookie = false;
    }
    $user = wp_signon($creds, $secure_cookie);
    wp_set_current_user($user->ID);
    wp_set_auth_cookie($user->ID, false, false);
    $user->data->user_registered = $this->formatDateForApp($user->data->user_registered);
    $this->response['user'] = $user->data;

如果我在桌面上使用浏览器,一切都很好,用户已经登录,我可以调用请求。

但当她尝试使用注销请求时,例如,脚本返回,没有用户登录:

require_once(ABSPATH . 'wp-includes/pluggable.php');
$user = wp_get_current_user();
if (empty($user) || empty($user->ID)) {
    $this->errorCode = NO_USER_WAS_LOGGED_IN;
    $this->errorMsg = 'No user was logged in';
} else {
    wp_logout();
    $this->response['message'] = $user->data->user_login . " logged out";
}
$this->showResponse();

我不熟悉移动开发,所以我不知道它是如何处理会话的。可能是问题吗?或者可能是饼干的问题?

另一件奇怪的事情是,如果我调用搜索方法(只需获取一些帖子并以json形式返回结果),它在浏览器中有效,但当她试图从电话中调用它时,由于某种原因,她得到了回复:

<html>
    <head>
        <meta http-equiv="refresh" content="0; url=http://59.xxx.xxx.xxx" />
    </head>
    <body>
    </body>
</html>

是的,我知道,这似乎太笼统了,如果没有她的代码,很难找出问题的原因,但也许你们中的一些人也有这个问题,可以帮助我们。我认为很多人开发了这样的应用程序,需要登录什么,并保持用户登录。

谢谢。

更新:这是一件有趣的事情,我以前从未遇到过这样的问题。开发商位于中国。我通过浏览器检查了那个IP地址,你猜怎么着:那个页面将她重定向到这个页面:

http://59.151.88.32/index.php?source=unicomdns

实际上是移动提供商,出于某种原因阻止了她的请求。解决方案可能是代理,或者我不知道,但现在我们知道,这不是我的服务问题,也不是她的程序问题。总的来说,这是中国人的问题。

好吧,至少我发现了问题。我写了一个小应用程序,什么是尝试使用这些请求。正如我提到的,在浏览器中一切都很好。

到现在为止,我从未尝试过从android使用net,但现在我做到了,当我想登录用户时,logcat说:

07-16 12:52:42.890:W/ResponseProcessCookies(9125):Cookie被拒绝:"BasicClientCookie[版本=0,名称=wordpress_d0c0d54098055ddfb5fe7a1313b4d3b5,域=.anydomain.com,路径=/wp-content/plugins,过期=null]"。非法的路径属性"/wp-content/plugins"。来源路径:"/service/app_request.php"

所以那是你的开发者不能登录用户的电话。。。

不幸的是,我不熟悉android在这个深度,所以我不知道这个解决方案。我在这里检查了cookie问题:Java HtmlUnit-can';t登录wordpress但是现在我不知道如何实现cookie处理。