こんにちは、Kohana を初めて使用します。Twitter サインイン モジュールを使用しようとしています。Twitter 情報にアクセスできますが、登録中に Auth orm 登録を使用しています (ユーザー モデルを Model_Auth_User で拡張したか、ログイン中に問題が発生しました)。 、しかし、登録中に、Twitterは電子メールを提供しないため(これは私が思う問題です)検証が失敗するため、必須の電子メールフィールドの検証を削除できるかどうかを知る必要があります
参照用にコードを追加しています
if(!empty($_GET['oauth_verifier']) && Session::instance()->get('oauth_token') && Session::instance()->get('oauth_token_secret'))
{
$twitteroauth = new TwitterOAuth(Kohana::$config->load('apiKey.twitter.TWITTER_CONSUMER_KEY'),Kohana::$config->load('apiKey.twitter.TWITTER_CONSUMER_SECRET'),Session::instance()->get('oauth_token'),Session::instance()->get('oauth_token_secret'));
$access_token = $twitteroauth->getAccessToken($_GET['oauth_verifier']);
$user_info = $twitteroauth->get('account/verify_credentials');
if(isset($user_info->error))
{
show_error("Some error has occured.");
}
else
{
$model = ORM::factory('user');
$result = $model->where('twitter_id','=', $user_info->id)->find();
if(!$result->id)
{
$name = explode(' ',$user_info->name);
$model = ORM::factory('user');
$data['twitter_id'] = $user_info->id;
$data['first_name'] = $name[0];
$data['last_name'] = $name[1];
$data['username'] = $user_info->screen_name;
$data['password'] = Auth::instance()->hash_password($user_info->screen_name);
$model->values($data);
$result = $model->save();
$role = ORM::factory('role')->where('name', '=', 'login')->find();
$model->add('roles', $role);
}
if($result->id)
{
//creating new ORM instance to use the result id
$model = ORM::factory('user');
$user = $model->find($result->id);
Auth::instance()->login($user->username,Auth::instance()->hash_password($user->username));
//Session::instance()->set('id', $model->id);
HTTP::redirect('user/dashboard');
}
else
{
HTTP::redirect('/');
}
}
}
else
{
$twitteroauth = new TwitterOAuth(Kohana::$config->load('apiKey.twitter.TWITTER_CONSUMER_KEY'),Kohana::$config->load('apiKey.twitter.TWITTER_CONSUMER_SECRET'));
$request_token = $twitteroauth->getRequestToken(URL::site());
$url = $twitteroauth->getAuthorizeURL($request_token['oauth_token']);
Session::instance()->set('oauth_token',$request_token['oauth_token']);
Session::instance()->set('oauth_token_secret', $request_token['oauth_token_secret']);
HTTP::redirect($url);
}