Esempio n. 1
0
function plugin_openid_finish_auth($consumer)
{
    global $vars, $_openid_msg;
    $die_message = PLUS_PROTECT_MODE ? 'die_msg' : 'die_message';
    $obj_verify = new auth_openid_plus_verify();
    $session_verify = $obj_verify->auth_session_get();
    //$session_verify['server_url']
    //$session_verify['local_id']
    $page = empty($session_verify['page']) ? '' : rawurldecode($session_verify['page']);
    $author = empty($session_verify['author']) ? '' : rawurldecode($session_verify['author']);
    $obj_verify->auth_session_unset();
    $return_to = get_page_location_uri($page);
    $response = $consumer->complete($return_to);
    /*
    echo '<pre>';
    var_dump($response);
    die();
    */
    switch ($response->status) {
        case Auth_OpenID_CANCEL:
            $die_message($_openid_msg['err_cancel']);
        case Auth_OpenID_FAILURE:
            $die_message($_openid_msg['err_failure'] . $response->message);
        case Auth_OpenID_SUCCESS:
            $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response);
            $sreg = $sreg_resp->contents();
            // $sreg['email'], $sreg['nickname'], $sreg['fullname']
            if (!isset($sreg['nickname'])) {
                if (PLUGIN_OPENID_NO_NICKNAME) {
                    $sreg['nickname'] = 'anonymouse';
                } else {
                    $die_message($_openid_msg['err_nickname']);
                }
            }
            $obj = new auth_openid_plus();
            $obj->response = $sreg;
            // その他の項目を引き渡す
            $obj->response['author'] = $author;
            $obj->response['local_id'] = !empty($response->endpoint->local_id) ? $response->endpoint->local_id : $response->endpoint->claimed_id;
            $obj->response['identity_url'] = $response->getDisplayIdentifier();
            $obj->auth_session_put();
            break;
    }
    // オリジナルの画面に戻る
    header('Location: ' . get_page_location_uri($page));
}