0

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

何らかの理由で彼女の要求をブロックしている実際のモバイル プロバイダーは何ですか。解決策はプロキシである可能性がありますが、わかりませんが、これは私のサービスの問題ではなく、彼女のプログラムの問題でもないことがわかりました. これは全体的に中国語の問題です。

4

1 に答える 1