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);
* * 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