您好,我正在使用具有重定向循环的网站
这是facebook集成问题的文件有问题...它重定向..
https://www.whyshopping.com/login.php?login=facebook
它包含以下代码:
<?php
include_once( 'generic.class.php' );
class Jigowatt_integration extends Generic {
public $enabledMethods;
public static $socialLogin = array(
'twitter',
'facebook',
'google',
'yahoo'
);
private $result;
private $num;
function __construct() {
$this->enabledMethods = $this->findEnabledMethods();
/**
* Twitter.
*/
if (in_array('twitter', $this->enabledMethods)) {
require 'integration/twitter/EpiCurl.php';
require 'integration/twitter/EpiOAuth.php';
require 'integration/twitter/EpiTwitter.php';
}
/**
* Facebook.
*/
if (in_array('facebook', $this->enabledMethods)) {
require 'integration/facebook/facebook.php';
}
/**
* OpenID Networks (Google, Yahoo).
*/
if (in_array('google', $this->enabledMethods) || in_array('yahoo', $this->enabledMethods)) {
include_once( 'integration/openid/openid.php' );
}
/** If the user is logged out, we'll treat them as a guest. */
if (empty($_SESSION['jigowatt']['user_id'])) {
//$this->guestLogin();
return false;
}
$this->retrieveInfo();
/** User wants to unlink his account from a social method. */
if ( !empty($_GET['unlink']) ) {
$this->unlink($_GET['unlink']);
$this->retrieveInfo();
}
if ( !empty($_GET['link']) ) {
$this->link_account($_GET['link']);
$this->retrieveInfo();
}
}
/** Check if this method is already in linked or not. */
public function isUsed($method) {
return !empty($this->result[$method]);
}
private function retrieveInfo() {
$params = array( ':user_id' => $_SESSION['jigowatt']['user_id'] );
$sql = "SELECT * FROM `login_integration` WHERE `user_id` = :user_id;";
$stmt = parent::query($sql, $params);
$this->num = $stmt->rowCount();
$this->result = $stmt->fetch(PDO::FETCH_ASSOC);
}
private function findEnabledMethods() {
$methods = array();
foreach ( self::$socialLogin as $method )
if ( parent::getOption('integration-'.$method.'-enable') )
$methods[] = $method;
return $methods;
}
public function link_account($link, $login = false) {
/** Make sure we only allow specific social links. */
if ( !in_array($link, self::$socialLogin) )
return false;
/** Check if user is already linked. */
if ( !empty($this->result[$link]) ) {
parent::displayMessage(sprintf('<div class="alert alert-warning">' . _('Your account is already linked with %s!') . '</div>', ucwords($link)), false);
return false;
}
/** See if the link was successful. */
if ( !empty($_SESSION['jigowatt'][$link]) ) {
if (!$login) $this->connect($link);
return false;
}
switch ($link) :
case 'facebook' :
header( 'Location: ' . $this->facebook_url() );
exit();
break;
case 'twitter' :
header( 'Location: ' . $this->twitter_url() );
exit();
break;
default :
$this->openid_url($link);
break;
endswitch;
}
private function connect($link) {
if ( empty($_SESSION['jigowatt']['user_id']) )
return false;
$params = array(
':user_id' => $_SESSION['jigowatt']['user_id'],
':session_link' => $_SESSION['jigowatt'][$link]
);
if ($this->num < 1)
$sql = "INSERT INTO `login_integration` (`user_id`, `$link`) VALUES (:user_id, :session_link);";
else
$sql = "UPDATE `login_integration` SET `$link` = :session_link WHERE `user_id` = :user_id;";
parent::query($sql, $params);
parent::displayMessage(sprintf('<div class="alert alert-success">%s</div>', _('Successfully linked with ' . ucwords($link))), false);
}
private function unlink($provider) {
if ( !in_array($provider, self::$socialLogin) )
return false;
if ( empty($this->result[$provider]) ) {
parent::displayMessage(sprintf('<div class="alert alert-warning">' . _('You are not yet linked with %s') . '</div>', ucwords($provider)), false);
return false;
}
$params = array( ':user_id' => $_SESSION['jigowatt']['user_id'] );
$sql = "UPDATE `login_integration` SET $provider = null WHERE `user_id` = :user_id;";
parent::query($sql, $params);
unset($_SESSION['jigowatt'][$provider]);
parent::displayMessage(sprintf('<div class="alert alert-success">' . _('Successfully unlinked from %s') . '</div>', ucwords($provider)), false);
}
private function openid_url($link) {
$providers = array(
'google' => 'https://www.googleapis.com/plus/v1/people/me/openIdConnect',
'yahoo' => 'https://me.yahoo.com',
'aol' => 'http://openid.aol.com/{username}',
'openid' => ''
);
if ( !empty($_GET['link']) || !empty($_GET['login']) )
$link = !empty($_GET['link']) ? $_GET['link'] : $_GET['login'];
try {
$openid = new LightOpenID(str_replace("www.","", $_SERVER['HTTP_HOST']));
if(!$openid->mode) {
if(!empty($link)) {
$openid->identity = $providers[$link];
$openid->returnUrl = str_replace("www.","", SITE_PATH) . basename($_SERVER['PHP_SELF']) . '?link=' . $link;
$openid->required = array('contact/email', 'namePerson/first', 'namePerson/last');
header('Location: ' . $openid->authUrl());
exit();
}
} elseif($openid->mode == 'cancel') {
echo 'User has canceled authentication!';
} else {
if ($openid->validate()) :
if( !empty($providers[$link]) ) :
$_SESSION['jigowatt'][$link] = $openid->identity;
$this->connect($link);
$_SESSION['jigowatt']['openIDMisc'] = $openid->getAttributes();
$_SESSION['jigowatt']['openIDMisc']['type'] = $link;
$_SESSION['jigowatt']['openIDMisc'][$link] = $openid->identity;
endif;
endif;
}
} catch(ErrorException $e) {
echo $e->getMessage();
}
}
public function facebook_url() {
if( !empty($_SESSION['jigowatt']['facebook']) )
return false;
$facebook = new Facebook(array(
'appId' => parent::getOption('facebook-app-id'),
'secret' => parent::getOption('facebook-app-secret'),
));
$this->fbUser = $facebook->getUser();
if ($this->fbUser) :
$user_profile = $facebook->api('/me');
try {
$_SESSION['jigowatt']['facebookMisc'] = $user_profile;
$_SESSION['jigowatt']['facebook'] = $this->fbUser;
} catch (FacebookApiException $e) {
error_log($e);
$this->fbUser = null;
}
endif;
$params = array(
'redirect_uri' => str_replace("https://www.","", SITE_PATH) . basename($_SERVER['PHP_SELF']) . '?link=facebook',
'scope' => 'email'
);
return $this->fbUser ? '#' : $facebook->getLoginUrl($params);
}
public function twitter_url() {
if ( !empty($_SESSION['jigowatt']['twitter']) )
return false;
$consumer_key = parent::getOption('twitter-key');
$consumer_secret = parent::getOption('twitter-secret');
$this->twitterObj = new EpiTwitter($consumer_key, $consumer_secret);
if( !empty($_GET['oauth_token']) ) {
$this->twitterObj->setToken($_GET['oauth_token']);
$token = $this->twitterObj->getAccessToken();
$this->twitterObj->setToken($token->oauth_token, $token->oauth_token_secret);
$twitterInfo = $this->twitterObj->get_accountVerify_credentials();
$twitterInfo = $twitterInfo->response;
$_SESSION['jigowatt']['twitter'] = $twitterInfo['id'];
$_SESSION['jigowatt']['twitterMisc']['username'] = $twitterInfo['screen_name'];
$_SESSION['jigowatt']['twitterMisc']['id'] = $twitterInfo['id'];
$_SESSION['jigowatt']['twitterMisc']['name'] = $twitterInfo['name'];
}
return !empty($_SESSION['jigowatt']['twitter']) ? '#' : $this->twitterObj->getAuthenticateUrl( null,array('oauth_callback' => str_replace("https://www.","", SITE_PATH) . basename($_SERVER['PHP_SELF']) . '?link=twitter' ));
}
}
$jigowatt_integration = new Jigowatt_integration();
答案 0 :(得分:0)
我得到了解决方案,实际上我的.htaccess文件有问题&amp;它起作用了
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule ^$ https://www.domain.com%{REQUEST_URI} [R,L]