使用脸书登录/谷歌PHP冲突
我试图实现一种方式让用户使用Google和Facebook作为大学作业的一部分登录。我有我的“与Google登录”代码很好地工作。然后我开始尝试实现我的“使用Facebook代码登录”。使用脸书登录/谷歌PHP冲突
<?php
//required files for Google+ login
require_once 'google-api-php-client/src/apiClient.php';
require_once 'google-api-php-client/src/contrib/apiPlusService.php';
//include this file containing specific app details (key, clientID, redirect etc) and get user details (image and name in this case)
include 'php/googleplus.php';
//required for facebook login
require 'facebook-php-sdk/src/facebook.php';
$facebook = new Facebook(array(
'appId' => 'xxxx',
'secret' => 'xxxx',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
?>
........ ........
<?php if ($user):
$fblogoutUrl = $facebook->getLogoutUrl();
?>
<a href="<?php echo $fblogoutUrl; ?>">Logout</a>
<?php else:
$fbloginUrl = $facebook->getLoginUrl();
?>
<div>
Login using OAuth 2.0 handled by the PHP SDK:
<a href="<?php echo $fbloginUrl; ?>">Login with Facebook</a>
</div>
<?php endif ?>
<div id="login">
<!--Load the php code that contains the user login options for google-->
<?php
include 'php/userlogin.php';
?>
我没有太多可言据我可以告诉改变的代码 - 只加我自己的应用程序ID,秘密和重定向。当我点击“使用Facebook登录”链接时,我收到以下错误消息:
**Fatal error**: Uncaught exception 'apiAuthException' with message 'Error fetching OAuth2 access token, message: 'invalid_grant'' in /Applications/MAMP/htdocs/www/Shared sites/LOGIN ASSIGNMENT/google-api-php-client/src/auth/apiOAuth2.php:105 Stack trace: #0 /Applications/MAMP/htdocs/www/Shared sites/LOGIN ASSIGNMENT/google-api-php-client/src/apiClient.php(138): apiOAuth2->authenticate(Array) #1 /Applications/MAMP/htdocs/www/Shared sites/LOGIN ASSIGNMENT/php/googleplus.php(19): apiClient->authenticate() #2 /Applications/MAMP/htdocs/www/Shared sites/Login Assignment/index.php(7): include('/Applications/M...') #3 {main} thrown in **/Applications/MAMP/htdocs/www/Shared sites/LOGIN ASSIGNMENT/google-api-php-client/src/auth/apiOAuth2.php** on line **105**
显然是由于某种原因试图访问Google php文件。我没有足够的经验来诊断问题。我想知道是否有其他人遇到这个错误,我将如何解决这个问题,谢谢。
您可以通过指定外部注销问题来解决此问题。你可以看看here
了解详细信息。这是一个很好的教程来解决这个问题。
希望这有助于
对于谷歌登录,就可以使用LightOpenID.Download从here
include 'openid.php';
$openid = new LightOpenID();
$openid->identity = 'google.com/accounts/o8/id';
$openid->required = array('namePerson/first', 'namePerson/last', 'contact/email');
$openid->returnUrl = 'your_return_url';
$googleLoginUrl = $openid->authUrl();
thats it
you can check if user logged in or not like
if ($openid->mode) { //User logged in}
谢谢。这是我的Facebook身份验证工作,但现在我仍然有上面提示与我的Google登录代码冲突的错误消息 – garethdn 2012-04-28 20:03:37
您可能包括谷歌包装的旧版本,我目前使用openid.php谷歌登录,我们可以试试吗? – 2012-04-28 20:41:17
我已经更新了代码,您可以像以前一样为返回网址提供与facebook的logout.php相同的网址。 logout.php删除整个会话。 – 2012-04-28 21:26:35
能否请您删除您的谷歌执行和Facebook只是尝试一下呢? – 2012-04-28 13:32:04
我现在要做的就是回到你身边 - 这可能需要我一点时间。 – garethdn 2012-04-28 13:33:05
好吧,我已经删除了谷歌的东西登录。当我最初点击“使用Facebook登录”链接时,我没有看到Facebook的权限弹出窗口 - 我的链接立即更改为“注销”。我不知道这是否是缓存问题?无论哪种方式,我都没有收到来自我的OP的错误消息。 – garethdn 2012-04-28 13:54:59