1

大学の課題の一環として、ユーザーがGoogleとFacebookにログインする方法を実装しようとしています。「LoginwithGoogle」コードはうまく機能していました。その後、「Facebookコードでログイン」の実装を試み始めました。

<?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ファイルにアクセスしようとしています。私は問題を診断するのに十分な経験がありません。他の誰かがこのエラーに遭遇したのではないかと思います。どうすればこの問題を解決できますか。ありがとうございます。

4

1 に答える 1

1

この問題は、外部ログアウト問題を指定することで解決できます。あなたはここで見ることができます

詳細については。これは、この問題の優れたチュートリアルです。

お役に立てれば

Googleログインには、LightOpenIDを使用できます。ここからダウンロードしてください。

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}
于 2012-04-28T19:51:01.947 に答える