Exemplo n.º 1
0
 public function fb_sign_in()
 {
     if (!(Fb::login() && ($me = Fb::me()) && (isset($me['name']) && ($name = $me['name']) && (isset($me['email']) && ($email = $me['email'])) && (isset($me['id']) && ($id = $me['id']))))) {
         return redirect_message(array(), array('_flash_message' => 'Facebook 登入錯誤,請通知程式設計人員!(1)'));
     }
     if (!($user = User::find('one', array('conditions' => array('uid = ?', $id))))) {
         if (!User::transaction(function () use(&$user, $id) {
             return verifyCreateOrm($user = User::create(array_intersect_key(array('uid' => $id), User::table()->columns)));
         })) {
             return redirect_message(array(), array('_flash_message' => 'Facebook 登入錯誤,請通知程式設計人員!(2)'));
         }
     }
     $user->name = $name;
     $user->login_count += 1;
     $user->logined_at = date('Y-m-d H:i:s');
     if (!User::transaction(function () use($user) {
         return $user->save();
     })) {
         return redirect_message(array(), array('_flash_message' => 'Facebook 登入錯誤,請通知程式設計人員!(3)'));
     }
     Session::setData('user_id', $user->id);
     return redirect_message(func_get_args(), array('_flash_message' => '使用 Facebook 登入成功!'));
 }