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)); }
function plugin_openid_verify($consumer) { global $vars, $_openid_msg; $page = empty($vars['page']) ? '' : '' . $vars['page']; $openid = $vars['openid_url']; $return_to = get_location_uri('openid', '', 'action=finish_auth'); $trust_root = get_script_absuri(); // FIXME: 不正な文字列の場合は、logoff メッセージを設定できない $author = empty($vars['author']) ? 'openid' : $vars['author']; $auth_request = $consumer->begin($openid); if (!$auth_request) { Utility::dieMessage($_openid_msg['err_authentication']); } $sreg_request = Auth_OpenID_SRegRequest::build(array('nickname'), array('fullname', 'email')); if ($sreg_request) { $auth_request->addExtension($sreg_request); } $shouldSendRedirect = $auth_request->shouldSendRedirect(); if ($shouldSendRedirect) { $redirect_url = $auth_request->redirectURL($trust_root, $return_to); if (Auth_OpenID::isFailure($redirect_url)) { Utility::dieMessage(sprintf($_openid_msg['err_redirect'], $redirect_url->message)); } } else { $form_id = 'openid_message'; $form_html = $auth_request->htmlMarkup($trust_root, $return_to, false, array('id' => $form_id)); if (Auth_OpenID::isFailure($form_html)) { Utility::dieMessage(sprintf($_openid_msg['err_redirect'], $form_html->message)); } } // v1 v2 // openid.server openid2.provider => $auth_request->endpoint->server_url ex. http://www.myopenid.com/server // openid.delegate openid2.local_id => $auth_request->endpoint->local_id ex. http://youraccount.myopenid.com/ $obj = new auth_openid_plus_verify(); $obj->response = array('server_url' => $auth_request->endpoint->server_url, 'local_id' => $auth_request->endpoint->local_id, 'page' => $page, 'author' => $author); $obj->setSession(); if ($shouldSendRedirect) { Utility::redirect($redirect_url); } else { //print $form_html; Utility::dieMessage($form_html); } }