twitteroauth PHP API を使用して、twitter サインインをスリム フレームワークに統合しようとしています。ログイン、登録、ユーザーなどのいくつかのモジュールを別のファイルに含めて、上部のインデックスで呼び出すことにより、インデックスページを分割しました。
fbのセッションを保存し、ミドルウェア関数$authorizeを使用してすべてのモジュールでそれをチェックした後、私のインデックスページはfbログインにリダイレクトされます。
とにかく、私の Twitter サインイン コードは、fb サインインが成功した後に表示されるユーザー ページにあります。
また、ページを jquery モバイル フレームワークにレンダリングします。
Twitter ボタンのコード、つまり /user/me 内。
<a class="twitterSignInButton" rel="external" href="twitterlogininit/"></a>
Twitter サインイン コード、つまり users.php 内
$app->get('/user/me/twitterlogininit/',function() use ($app){
$request_token=$app->twitter->getRequestToken('http://<domain>/App/user/me/twitterlogin/');
$_SESSION['oauth_token']=$request_token['oauth_token'];
$_SESSION['oauth_token_secret']=$request_token['oauth_token_secret'];
if($app->twitter->http_code==200){
// Let's generate the URL and redirect
$url = $app->twitter->getAuthorizeURL($request_token['oauth_token']);
$app->redirect($url);
} else {
// It's a bad idea to kill the script, but we've got to know when there's an error.
die('Something wrong happened.');
}
});
//twitter redirect
$app->get('/user/me/twitterlogin/',function() use ($app){
if(!empty($_GET['oauth_verifier']) && !empty($_SESSION['oauth_token']) && !empty($_SESSION['oauth_token_secret'])){
$app->twitteroauth = new TwitterOAuth('xxxxx', 'xxxxx', $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
$access_token = $app->twitteroauth->getAccessToken($_GET['oauth_verifier']);
$_SESSION['access_token'] = $access_token;
$user_info = $app->twitteroauth->get('account/verify_credentials');
print_r($user_info);
} else {
// Something's missing, go back to square 1
}
});
そして、私が得るエラーは
Slim Application Error
The application could not run because of the following error:
Details:
Message: Undefined index: oauth_token
File: /var/www/html/FoodKite/App/Libs/Twitter/twitteroauth.php
Line: 118
Stack Trace:
#0 /var/www/html/FoodKite/App/Libs/Twitter/twitteroauth.php(118): Slim::handleErrors(8, 'Undefined index...', '/var/www/html/F...', 118, Array)
#1 /var/www/html/FoodKite/App/Modules/Users.php(172): TwitterOAuth->getAccessToken('yiIL1eyvwGVOrQI...')
#2 [internal function]: {closure}()
#3 /var/www/html/FoodKite/App/Slim/Route.php(392): call_user_func_array(Object(Closure), Array)
#4 /var/www/html/FoodKite/App/Slim/Slim.php(1051): Slim_Route->dispatch()
#5 /var/www/html/FoodKite/App/index.php(154): Slim->run()
#6 {main}
たくさんの検索の後、私はprollyのtwitter reject reqを見つけました。タイムスタンプのため。それでも回避策を見つけることができます
更新:
Facebookにログインする前に、index.phpにすべてのコードを追加しました。それはうまく動作します。ホームページのボタンから。
ここで、必要なページにボタンを追加すると、つまり /user/app にホームページと同じコードを使用すると、同じエラーが発生します。スリムは今ではコンブロックだと思います。スリムなセッション処理に関してどこかで読んだことがありますが、それが問題の 1 つになる可能性はありますか?