PHP OpenID içinde AX Örnek kullanım

2 Cevap php

Ben JanRain en PHP OpenID kütüphanesi kullanıyorum. Bu SReg uzantısı kullanan örnek komut dosyası ile birlikte gelir. Ama Google ile çalışmak isteyen (ve aslında auth için çalışır), ama Google, ek veriler için yerine SReg ve AX (nitelik değişimi) kullanır. Nedense, JanRain kütüphane örnek komut AX desteğini eksik ve SReg script yorumlar 1-2-3 gibi net olsa AX script kodu yorumlar, benim anlayış dışında.

Herkes çok fazla ağrı olmadan AX uygulamak için nasıl biliyor mu?

2 Cevap

Aynı konu koştu. AX.php Bazı kazma bana bir çalışma başlangıç ​​var. Herhangi bir hata baktı, ne de temel ötesinde test, ne de Google dışındaki hiç kimse ile test değil. Bu hoş değil: hata işleme, vs ihtiyacı Ama bu başlangıç ​​almalısınız. Ben sağlam bir şey varsa, bir güncelleme yayınlayacağız ...

First to throw ...

//  oid_request.php

// Just tested this with/for Google, needs trying with others ...
$oid_identifier = 'https://www.google.com/accounts/o8/id';

// Includes required files
require_once "Auth/OpenID/Consumer.php";
require_once "Auth/OpenID/FileStore.php";
require_once "Auth/OpenID/AX.php";

// Starts session (needed for YADIS)
session_start();

// Create file storage area for OpenID data
$store = new Auth_OpenID_FileStore('./oid_store');

// Create OpenID consumer
$consumer = new Auth_OpenID_Consumer($store);

// Create an authentication request to the OpenID provider
$auth = $consumer->begin($oid_identifier);

// Create attribute request object
// See http://code.google.com/apis/accounts/docs/OpenID.html#Parameters for parameters
// Usage: make($type_uri, $count=1, $required=false, $alias=null)
$attribute[] = Auth_OpenID_AX_AttrInfo::make('http://axschema.org/contact/email',2,1, 'email');
$attribute[] = Auth_OpenID_AX_AttrInfo::make('http://axschema.org/namePerson/first',1,1, 'firstname');
$attribute[] = Auth_OpenID_AX_AttrInfo::make('http://axschema.org/namePerson/last',1,1, 'lastname');

// Create AX fetch request
$ax = new Auth_OpenID_AX_FetchRequest;

// Add attributes to AX fetch request
foreach($attribute as $attr){
    $ax->add($attr);
}

// Add AX fetch request to authentication request
$auth->addExtension($ax);

// Redirect to OpenID provider for authentication
$url = $auth->redirectURL('http://localhost:4001', 'http://localhost:4001/oid_catch.php');
header('Location: ' . $url);

... and then to catch

<?php

//  oid_catch.php

// Includes required files
require_once "Auth/OpenID/Consumer.php";
require_once "Auth/OpenID/FileStore.php";
require_once "Auth/OpenID/AX.php";

// Starts session (needed for YADIS)
session_start();

// Create file storage area for OpenID data
$store = new Auth_OpenID_FileStore('./oid_store');

// Create OpenID consumer
$consumer = new Auth_OpenID_Consumer($store);

// Create an authentication request to the OpenID provider
$auth = $consumer->complete('http://localhost:4001/oid_catch.php');

if ($response->status == Auth_OpenID_SUCCESS) {
    // Get registration informations
    $ax = new Auth_OpenID_AX_FetchResponse();
    $obj = $ax->fromSuccessResponse($response);

    // Print me raw
    echo '<pre>';
    print_r($obj->data);
    echo '</pre>';
    exit;


} else {
  // Failed
}

Bu temelleri olmalı ...

Istek yarısı ancak ben Catch başarısızlık alıyorum, çalışıyor.

Yukarıdaki satır gerekir

$auth = $consumer->complete('http://localhost:4001/oid_catch.php');

olmak

$response = $consumer->complete('http://localhost:4001/oid_catch.php');

Otherwise, where does the response object come from? I am not getting returned the openid.current_url in my response to check the url with?