开发者

My OpenId code not redirecting to Google login page

I have some code that is supposed to redirect to the google login page for OpenId

<?php
include '../connect.php';
require_once "common.php";

$path = $_GET['path'];


    if (empty( $path ) )
    {
        $error = "Expected an OpenID URL.";
        //include 'index.php';
        //exit(0);
    }
    else
    {
        echo "<p>Success, path: ".$path."</p>";
    }

    $consumer = getConsumer();

    // Begin the OpenID authentication process.
    $auth_request = $consumer->begin($path);   

    // No auth request means we can't begin OpenID.
    if (!$auth_request) 
    {
        echo "<p>Authentication error; not a valid OpenID.</p>";开发者_JAVA百科
    }

    $sreg_request = Auth_OpenID_SRegRequest::build(
                                     // Required
                                     array('nickname'),
                                     // Optional
                                     array('fullname', 'email'));

    if ($sreg_request) 
    {
        $auth_request->addExtension($sreg_request);
    }

    $policy_uris = $_GET['policies'];    

    $pape_request = new Auth_OpenID_PAPE_Request($policy_uris);
    if ($pape_request) 
    {
        $auth_request->addExtension($pape_request);
    }

    // Redirect the user to the OpenID server for authentication.
    // Store the token for this authentication so we can verify the response.

    // For OpenID 1, send a redirect.  For OpenID 2, use a Javascript
    // form to send a POST request to the server.
    if ($auth_request->shouldSendRedirect()) 
    {
        $redirect_url = $auth_request->redirectURL(getTrustRoot(), getReturnTo());     

        // If the redirect URL can't be built, display an error
        // message.
        if (Auth_OpenID::isFailure($redirect_url)) 
        {
            displayError("Could not redirect to server: " . $redirect_url->message);
        } 
        else 
        {
            // Send redirect.

            echo '<p>Would have redirected url</p>';
            header("Location: ".$redirect_url);
        }
    }        
    else 
    {
        // Generate form markup and render it.
        $form_id = 'openid_message';
        $form_html = $auth_request->htmlMarkup(getTrustRoot(), getReturnTo(),
                                               false, array('id' => $form_id));

        // Display an error if the form markup couldn't be generated;
        // otherwise, render the HTML.
        if (Auth_OpenID::isFailure($form_html)) 
        {
            echo "<p>Could not redirect to server: " . $form_html->message."</p>";
        } 
        else 
        {
            print $form_html;
        }                                   
    } 

    run ();
?>

Then the page is supposed to return to a script called finish_auth.php which is here (currently with lots of debug statements):

<?php
require_once "common.php";
session_start();

function escape($thing) 
{
    return htmlentities($thing);
}

function run() 
{
    $consumer = getConsumer();
    var_dump($consumer); 
    echo '<p>test 2</p>';   

    // Complete the authentication process using the server's
    // response.
    $return_to = getReturnTo();

        var_dump($return_to); 
    echo '<p>test 3</p>';    
    $response = $consumer->complete($return_to);

        var_dump($response); 
    echo '<p>test 4</p>';     

    // Check the response status.
    if ($response->status == Auth_OpenID_CANCEL) 
    {
        // This means the authentication was cancelled.
        $msg = 'Verification canceled.';
         echo '<p>Canceled</p>';  
    } 
    else 
    if ($response->status == Auth_OpenID_FAILURE) 
    {
        echo '<p>Open Id Failure</p>';  
        // Authentication failed; display the error message.
        $msg = "OpenID authentication failed: " . $response->message;
    } 
    else 
    if ($response->status == Auth_OpenID_SUCCESS) 
    {
            echo '<p>SUCCESS</p>';  
        // This means the authentication succeeded; extract the
        // identity URL and Simple Registration data (if it was
        // returned).
        $openid = $response->getDisplayIdentifier();

        var_dump($openid); 

        $esc_identity = escape($openid);



        $success = sprintf('You have successfully verified ' .
                           '<a href="%s">%s</a> as your identity.',
                           $esc_identity, $esc_identity);

        if ($response->endpoint->canonicalID) 
        {
            $escaped_canonicalID = escape($response->endpoint->canonicalID);
            $success .= '  (XRI CanonicalID: '.$escaped_canonicalID.') ';
        }

        $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response);

        $sreg = $sreg_resp->contents();

        var_dump($sreg); 
    echo '<p>test sreg</p>';         

        if (@$sreg['email']) 
        {
            $success .= "  You also returned '".escape($sreg['email']).
                "' as your email.";

                echo $success;
        }
        else
        {
            echo '<p>Not email success</p>';
        }


        if (@$sreg['nickname']) 
        {
            $success .= "  Your nickname is '".escape($sreg['nickname']).
                "'.";

            echo $success;
        }
        else
        {
                    echo '<p>Not nickname success</p>';
        }

        if (@$sreg['fullname']) 
        {
            $success .= "  Your fullname is '".escape($sreg['fullname']).
                "'.";

                                echo $success;
        }
        else
        {
                        echo '<p>Not full name success</p>';
        }

        $pape_resp = Auth_OpenID_PAPE_Response::fromSuccessResponse($response);

        if ($pape_resp) 
        {
            if ($pape_resp->auth_policies) 
            {
                $success .= "<p>The following PAPE policies affected the authentication:</p><ul>";

                foreach ($pape_resp->auth_policies as $uri) 
                {
                    $escaped_uri = escape($uri);
                    $success .= "<li><tt>$escaped_uri</tt></li>";
                }

                $success .= "</ul>";
            } 
            else 
            {
                $success .= "<p>No PAPE policies affected the authentication.</p>";
            }

            if ($pape_resp->auth_age) 
            {
                $age = escape($pape_resp->auth_age);
                $success .= "<p>The authentication age returned by the " .
                    "server is: <tt>".$age."</tt></p>";
            }

            if ($pape_resp->nist_auth_level) 
            {
                $auth_level = escape($pape_resp->nist_auth_level);
                $success .= "<p>The NIST auth level returned by the " .
                    "server is: <tt>".$auth_level."</tt></p>";
            }
    } 
    else 
    {
            $success .= "<p>No PAPE response was sent by the provider.</p>";
    }
}

    //include '../index.php';
                           //  header( 'Location: http://www.comehike.com' );


                             // $_SESSION['user_id'] = $user_id;
                             // $_SESSION['user_email']  = $row['user_email'];
                             // $_SESSION['user_lat']  = $row['lat'];
                             // $_SESSION['user_lng']  = $row['lng'];
                             // $_SESSION['first_name'] = $row['first_name'];
}

run();


?>

You can test out the current UX for yourself by going here:

http://www.comehike.com/account/member_home.php

And click on "login with your google account" link.

What I am wondering is - how can I get the page to actually redirect to the google page for logging in? Current ux doesn't take you there to verify that you can login with your gmail account into comehike.com

Thanks!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜