我正在尝试使用 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 拒绝请求。因为时间戳。仍然可以找到任何解决方法
更新:
在 facebook 登录之前,我在 index.php 上添加了所有代码。它工作得很好。与主页上的按钮。
现在,如果我将按钮添加到我想要的页面,即 /user/app 使用与主页相同的代码,它会给出相同的错误,我猜 slim 现在是一个 confloc。我在某处读到过关于瘦会话处理的内容,这可能是问题之一吗?