1

ユーザー認証を処理する Ruby on Rails で作成したサイトがあります。これで、同じサイトのサブフォルダーの下に、ユーザー ロールを指定する RoR によって提供される JSON を取得する PHP アプリケーションがあります。

PHPからJSONを取得しようとすると、ユーザーがログインしていても常に「Guest」として取得されます(ブラウザセッションが維持されていないためだと思います)。JSONを取得するために使用するコードは

$json_url = 'https://mysite.com.com/usertype';
$json_string = '[usertype]';
// Initializing curl
$ch = curl_init( $json_url );
// Configuring curl options
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array('Content-type: application/json') ,
CURLOPT_POSTFIELDS => $json_string
);
// Setting curl options
curl_setopt_array( $ch, $options );
// Getting results
$result =  curl_exec($ch); // Getting jSON result string

セッションを維持しているJSONを取得できる場所で誰かが私を助けることができるものはありますか????

4

1 に答える 1

1

RoR は認証 Cookie を設定します。したがって、最初のステップは、その Cookie 名を見つけることです。デフォルト名は "_myprojectname_session" ですが、変更することができます( Rails のどこからでも "セッション キー" Cookie 名にアクセスするconfig/initializers/session_store.rbを参照してください)。

Cookie 名を見つける簡単な方法は、ブラウザーで表示することです (たとえば、この chrome 拡張機能を使用します: http://code.google.com/p/editthiscookie/ )。

Cookie 名 (「_myapp_session」など) を見つけたら、次のように、セッション Cookie を PHP リクエストから CURL オプションにコピーする必要があります。

$options = array(
CURLOPT_COOKIE => "_myapp_session=" . $_COOKIE['_myapp_session'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array('Content-type: application/json') ,
CURLOPT_POSTFIELDS => $json_string
);
于 2012-06-07T21:18:10.010 に答える