function signJsConnect($Data, $ClientID, $Secret, $HashType, $ReturnData = FALSE) { $Data = array_change_key_case($Data); ksort($Data); foreach ($Data as $Key => $Value) { if ($Value === NULL) { $Data[$Key] = ''; } } $String = http_build_query($Data, NULL, '&'); // echo "$String\n"; $Signature = jsHash($String . $Secret, $HashType); if ($ReturnData) { $Data['client_id'] = $ClientID; $Data['signature'] = $Signature; // $Data['string'] = $String; return $Data; } else { return $Signature; } }
public static function connectUrl($Provider, $Secure = FALSE, $Callback = TRUE) { if (!is_array($Provider)) { $Provider = self::getProvider($Provider); } if (!is_array($Provider)) { return FALSE; } $Url = $Provider['AuthenticateUrl']; $Query = array('client_id' => $Provider['AuthenticationKey']); if ($Secure) { include_once dirname(__FILE__) . '/functions.jsconnect.php'; $Query['timestamp'] = jsTimestamp(); $Query['signature'] = jsHash($Query['timestamp'] . $Provider['AssociationSecret'], GetValue('HashType', $Provider)); } if ($Target = Gdn::Request()->Get('Target')) { $Query['Target'] = $Target; } else { $Query['Target'] = '/' . ltrim(Gdn::Request()->Path(), '/'); } if (StringBeginsWith($Query['Target'], '/entry/signin')) { $Query['Target'] = '/'; } $Result = $Url . (strpos($Url, '?') === FALSE ? '?' : '&') . http_build_query($Query); if ($Callback) { $Result .= '&callback=?'; } return $Result; }