0

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

此 API 中有多种方法,但所有方法(登录除外)都需要经过身份验证的用户。

所以我提出了这样的请求(现在是一个工作链接): http ://anydomain.com/service/app_request.php?request=login&username=xxx&password=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();

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

另一个奇怪的事情是,如果我调用搜索方法(只需获取一些帖子并在 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

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

4

1 回答 1

0

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

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

07-16 12:52:42.890: W/ResponseProcessCookies(9125): Cookie 被拒绝: "BasicClientCookie[版本=0,name=wordpress_d0c0d54098055ddfb5fe7a1313b4d3b5,domain=.anydomain.com,path=/wp-content/plugins,expiry=null] ”。非法路径属性“/wp-content/plugins”。来源路径:“/service/app_request.php”

那是您的开发人员无法在手机上登录用户...

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

于 2013-07-16T11:43:51.173 回答