2016-03-26 2 views
1

PHP用Evernote Cloud SDKを使用しています(here)。 EvernoteのクラウドSDKの次の行によるとEvernoteクラウドSDKを使用して、自分のlaravelアプリケーションでheader()リダイレクトが機能しない

class OauthController extends Controller 
{ 
    public function reqToken() 
    { 
     $oauthHandler = new OauthHandler(env('EVERNOTE_SANDBOX', 'true')); 
     $callback = 'http://localhost/auth'; //temp 
     $oauthData = $oauthHandler->authorize(env('EVERNOTE_KEY', ''), env('EVERNOTE_SECRET', ''), $callback); 
    } 

} 

:私のコードで

、私は彼らのサンプルのOAuthに似何かしようとしています、私はコントローラにコードを配置している( hereを見つけました)

header($authorizationUrl); 

が、私はコードのこの行はは、呼び出さないことを見ることに私の方法をデバッグしている、そしてまだ私のページが0に再ルーティングされません:コードはauthorize()下と呼ばれていますあるは、:

"場所:https://sandbox.evernote.com/OAuth.action?oauth_token=token"

私は空白のlaravelページに滞在してしまいます。それが助け場合

は、ここに私のルートである:私は、ヘッダの機能上の情報のためのドキュメントで探してみました

Route::get('/auth', '[email protected]'); 

が、それは私のためにめちゃくちゃだ理由を示す何も表示されませんでした。何か案は?

+0

'header()'関数が呼び出された後、 'die;'または 'exit;'でリクエストを強制終了し、ページ上に何も出力しないでください。あなたの ' - > authorize()'コールの後にそれを追加してみてください。もう一つはヘッダがすでに送られているので、実際にはブラウザに送られていません。 –

+0

'exit() 'うまくいった!なぜこれが分かっていますか?私が知る限り、彼らはそのサンプルアプリケーションでそれをしないのですか? (私は上記の例をリンクしています)。また、この 'exit()'メソッドを使用するのは "ok"ですか、それともちょっとした仕事ですか? – k4kuz0

+0

あなたはあなたのメソッドが呼び出された後、ヘッダが完全に送信されず、Laravelが何かをやり続けるということは、このヘッダを破損したり、オーバーライドして問題を引き起こしたりする可能性があります。ヘッダーが設定された直後にexitまたはdieを呼び出すと、Laravelがデフォルトで提供する余分なオーバーヘッドがすべてスキップされます。 –

答えて

1

を渡すことができます。あなたの->authorize()コールの後にそれを追加してみてください。もう1つのことは、ヘッダーがすでに送信されていることです。このため、実際にはブラウザに送信されません。

通常、ヘッダーが完全に送信されず、メソッドが呼び出された後にLaravelが処理を続けると、このヘッダーが破損したり、オーバーライドされたりして問題が発生する可能性があります。したがって、ヘッダーが設定された直後にexit;またはdie;を呼び出すと、Laravelがデフォルトで提供する余分なオーバーヘッドがすべてスキップされます。

0

try laravelリダイレクト機能。

リダイレクト()header()関数が呼び出された後

はあなたがページ上die;exit;と何も出力で要求を殺す必要があり、完全なURLで

+0

リダイレクトコードは、Evernote SDKの一部である 'authorize'メソッドの下にあります。私自身のコードではありません。私はevernote SDKが問題のない他人によって使用されていると仮定しているので、何が間違っていたのだろうかと思いますか? – k4kuz0

関連する問題