2013-07-12 52 views
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(); 

我不熟悉移動開發,所以我不知道,是怎麼它處理會話。這可能是問題嗎?或者它可能是一個餅乾問題?另一個奇怪的事情是,如果我調用搜索方法(只需獲得一些帖子並在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 

什麼是真正的移動服務提供商,是誰擋住了她某種原因請求。 解決方案可能是一個代理,或者我不知道,但現在我們知道,這不是我的服務問題,而不是她的計劃問題。這是一個總體問題。

回答

0

好吧,至少我發現了這個問題。我寫了一個小應用程序,試圖使用這些請求。 正如我所提到的,在瀏覽器中一切都很好。

我從來沒有試圖用網從機器人到現在,但現在我做到了,而當我想登錄的用戶,logcat的說:

12月7日至16日:52:42.890:W/ResponseProcessCookies (9125):Cookie被拒絕:「BasicClientCookie [version = 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處理。

相關問題