我們有一個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();
我不熟悉移動開發,所以我不知道,是怎麼它處理會話。這可能是問題嗎?或者它可能是一個餅乾問題?另一個奇怪的事情是,如果我調用搜索方法(只需獲得一些帖子並在json中返回結果),它就可以在瀏覽器中使用,但是當她試圖從手機中調用它時,她會得到一些原因:
<html>
<head>
<meta http-equiv="refresh" content="0; url=http://59.xxx.xxx.xxx" />
</head>
<body>
</body>
</html>
是的,我知道,這似乎太一般,沒有她的代碼,這將是很難搞清楚是什麼原因造成的問題,但也許你有些也有這個問題,可以幫助我們。我認爲很多人開發這樣的應用程序,需要登錄什麼,並保持用戶登錄。
謝謝。
UPDATE: 這是一個有趣的事情,我從來沒有像這樣的問題之前滿足。 該開發人員位於中國。 我檢查IP通過瀏覽器的地址,並猜測:這頁是她重定向到這個頁面:
http://59.151.88.32/index.php?source=unicomdns
什麼是真正的移動服務提供商,是誰擋住了她某種原因請求。 解決方案可能是一個代理,或者我不知道,但現在我們知道,這不是我的服務問題,而不是她的計劃問題。這是一個總體問題。