WordPress の Web ページがあり、これから 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();
私はモバイル開発に精通していないので、セッションをどのように処理するのかわかりません。それが問題でしょうか?それともクッキーの問題でしょうか?
もう1つの奇妙なことは、検索メソッドを呼び出すと(投稿を取得して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
何らかの理由で彼女の要求をブロックしている実際のモバイル プロバイダーは何ですか。解決策はプロキシである可能性がありますが、わかりませんが、これは私のサービスの問題ではなく、彼女のプログラムの問題でもないことがわかりました. これは全体的に中国語の問題です。