public function testnkConnectLoginUri()
 {
     $s = array('HTTPS' => 'on', 'HTTP_HOST' => 'localhost', 'REQUEST_URI' => '/some/path.php?aaa=bbb', 'REQUEST_METHOD' => 'GET');
     $ss = array('nkconnect_some_key_otp' => 'aaaa_bbbb_ccc');
     $this->request->expects($this->any())->method('getServerData')->will($this->returnValue($s));
     $this->request->expects($this->any())->method('getSessionData')->will($this->returnValue($ss));
     $result = $this->object->nkConnectLoginUri();
     $this->assertSame('https://nk.pl/oauth2/login?client_id=some_key&response_type=code&redirect_uri=https%3A%2F%2Flocalhost%2Fsome%2Fpath.php%3Faaa%3Dbbb%26nkconnect_state%3Dcallback&scope=&state=aaaa_bbbb_ccc', $result);
 }
<?php

/*
 * Copyright 2011 Nasza Klasa Spółka z ograniczoną odpowiedzialnością
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
 * Ten plik jest przykładem zamykania sesji autentykacji NKConnect
 */
// Załaduj wspólny plik konfiguracji
require 'authentication2config.php';
unset($_SESSION['logged_in']);
$auth = new NKConnect($conf);
$auth->logout();
header("Location: authentication2.php");
 * limitations under the License.
 */
// Załaduj bibliotekę NK
require '../src/NK.php';
/*
 * Konfiguracja Twojej aplikacji, wszystkie potrzebne informacje znajdziesz w panelu konfiguracyjnym aplikacji
 * Jeśli preferujesz bardziej obiektowy styl, popatrz na klasę NKConfig
 */
$conf = array('permissions' => array(NKPermissions::BASIC_PROFILE), 'key' => 'demo', 'secret' => 'b27d8aa6-74ee-4bbc-9ea1-0a3e5acc9bb8');
/*
 * Zanim rozpoczniesz renderowanie HTMLa utwórz obiekt NKConnect i pozwól mu obsłużyć na tej proces
 * logowania (handleCallback). Jeśli chcesz lub musisz obsłużyć callback na osobnej stronie, zaimplementować jakąś logikę
 * wykonywaną w momencie zalogowania w NK lub połączyć rejestrację/własną bazę użytkowników popatrz na przykład z pliku
 * authentication2.php
 */
$auth = new NKConnect($conf);
$auth->handleCallback();
?>
<html>
  <head>
    <title>Demo autentykacji z użyciem NKConnect</title>
  </head>
  <body>
    <p>Ten przykład pokazuje sposób w jaki można użyć NKConnect do logowania bez potrzeby używania dodatkowej strony
    obsługującej callback. Dla nie zalogowanego użytkownika wyświetlamy przycisk "Zaloguj z NK" który otworzy stronę
    logowania w portalu NK i poprosi użytkownika o akceptację dostępu do danych. Po zalogowaniu uruchamiana jest sesja,
    dzięki czemu na dowolnej stronie, poprzez użycie</p>
    <pre>
    $auth = new NKConnect($conf);
    $user = $auth->user()
    </pre>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Załaduj wspólny plik konfiguracji
require 'authentication2config.php';
$auth = new NKConnect($conf);
if ($auth->handleCallback()) {
    // Tutaj umieść kod, który wykonany zostanie po udanym zalogowaniu użytkownika na NK, wsztstkie dane użytkownika
    // dostępne są poprzez $auth->user() - możesz także skorzystać z dostępnych serwisów NK, przykłady znajdziesz w
    // pliku services.php.
    // Poniższy kawałek kodu jest prostym przykładem, służy do zademonstrowania *przykładowego* sposobu obsługi
    // użytkowników we własnej bazie danych
    // Sprawdź używając NK id, czy użytkownik znajduje się w bazie danych
    $q = $db->prepare("SELECT * FROM `users` WHERE `nk_person_id` = :nk_person_id");
    $q->bindValue('nk_person_id', $auth->user()->id(), PDO::PARAM_STR);
    $q->execute();
    if (false === ($u = $q->fetch(PDO::FETCH_ASSOC))) {
        // W bazie nie ma użytkownika, zarejestrujmy go
        $q = $db->prepare("INSERT INTO `users` (`nk_person_id`, `name`, `last_login_1`, `last_login_2`, `login_count`) VALUES (:nk_person_id, :name, :now, :now, 1)");
        $q->bindValue('nk_person_id', $auth->user()->id(), PDO::PARAM_STR);
        $q->bindValue('name', $auth->user()->name(), PDO::PARAM_STR);
Beispiel #5
0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
 * Ten przykład pokazuje w jaki sposób uzyskać dostęp do danych portalu NK
 */
// Załaduj bibliotekę NK
require '../src/NK.php';
// Konfiguracja Twojej aplikacji, wszystkie potrzebne informacje znajdziesz w panelu konfiguracyjnym aplikacji
// Jeśli preferujesz bardziej obiektowy styl, popatrz na klasę NKConfig
$conf = array('permissions' => array(NKPermissions::BASIC_PROFILE, NKPermissions::PICTURES_PROFILE, NKPermissions::EMAIL_PROFILE, NKPermissions::CREATE_SHOUTS), 'key' => 'demo', 'secret' => 'b27d8aa6-74ee-4bbc-9ea1-0a3e5acc9bb8');
$auth = new NKConnect($conf);
$auth->handleCallback();
try {
    $service = $auth->getService();
} catch (NKAuthenticationUnauthorisedException $e) {
    $service = null;
}
?>
<html>
  <head>
    <title>Demo services</title>
  </head>
  <body>
    <?php 
if ($auth->authenticated()) {
    ?>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Załaduj wspólny plik konfiguracji
require 'authentication2config.php';
$auth = new NKConnect($conf);
if ($auth->authenticated()) {
    // Ten kawałek kodu próbuje odszukać w lokalnej bazie danych użytkownika zalogowanego przez NK
    // Jeśli użytkownik jest zalogowany spróbuj pobrać jego dane
    $q = $db->prepare("SELECT * FROM `users` WHERE `nk_person_id` = :nk_person_id");
    $q->bindValue('nk_person_id', $auth->user()->id(), PDO::PARAM_STR);
    $q->execute();
    $user = $q->fetch(PDO::FETCH_ASSOC);
}
?>
<html>
  <head>
    <title>Demo autentykacji z użyciem NKConnect i wydzielonej strony z callbackiem</title>
  </head>
  <body>
    <p>Ten przykład pokazuje sposób w jaki można użyć NKConnect do logowania, z użyciem osobnej strony obsługującej callback