phpopenidjanrainsregattribute-exchange

JanRain PHP OpenID: How to check if a provider supports AX programmatically?


Ok, my problem is that some providers support SREG and some support only AX I need to know how it is that I can request from the provider which methods they support.. I tried looking through the documentation here http://openidenabled.com/files/php-openid/docs/2.1.3/ but I didn't see anything.


Solution

  • Faced similar problem.

    The below code should help you.

    So if

    
    function getReturnTo() {
        return sprintf("%s://%s:%s%s/finish_auth.php",
                       getScheme(), $_SERVER['SERVER_NAME'],
                       $_SERVER['SERVER_PORT'],
                       dirname($_SERVER['PHP_SELF']));
    }
    
    function &getConsumer() {
        /**
         * Create a consumer object using the store object created
         * earlier.
         */
        $store = getStore();
        $consumer =& new Auth_OpenID_Consumer($store);
        return $consumer;
    }
    
    $consumer = getConsumer();
    
    $return_to = getReturnTo();
    $response = $consumer->complete($return_to);
    
    $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response);
    
    $ax = new Auth_OpenID_AX_FetchResponse();
    $obj = $ax->fromSuccessResponse($response);
    
    if($sreg)
    {
       //sreg is supported, start creating the sreg data array.
    }
    elseif($obj)
    {
       // attribute exchange supported. fetch details here
    }
    
    

    this will help you diagnose which data is coming, SREG or Atribute Exchange