Beispiel #1
0
 /**
  * Obtain the user information from Twitter.
  *
  * @return Response
  */
 public function handleProviderCallback()
 {
     $package_from_twitter = Socialite::driver('twitter')->user();
     if ($package_from_twitter) {
         $twitter_user = TwitterUser::where('twitter_id', $package_from_twitter->id)->first();
         if (!$twitter_user) {
             $twitter_user = new TwitterUser();
         }
         $twitter_user->twitter_id = $package_from_twitter->id;
         $twitter_user->name = $package_from_twitter->name;
         $twitter_user->screen_name = $package_from_twitter->nickname;
         $twitter_user->description = $package_from_twitter->user['description'];
         $twitter_user->utc_offset = $package_from_twitter->user['utc_offset'];
         if (@$package_from_twitter->user['profile_banner_url']) {
             $twitter_user->profile_background_image_url = $package_from_twitter->user['profile_banner_url'];
         }
         $twitter_user->profile_image_url = $package_from_twitter->user['profile_image_url'];
         $twitter_user->updated_timestamp_utc = time();
         $twitter_user->created_timestamp_utc = time();
         $twitter_user->oauth_token = Input::get('oauth_token');
         $twitter_user->oauth_token_secret = Input::get('oauth_verifier');
         $twitter_user->save();
         $user = Auth::user();
         if ($user && $user->temporary == 1) {
             Auth::logout();
         }
         $user = Auth::user();
         if ($user) {
             $user->twitter_user_id = $twitter_user->id;
             $user->updated_timestamp_utc = time();
             $user->most_recent_ip = request()->ip();
             $user->save();
         } else {
             $user = User::where('twitter_user_id', $twitter_user->id)->first();
             if (!$user) {
                 $user = new User();
                 $username = $twitter_user->screen_name;
                 $orig_username = $username;
                 $i = 0;
                 $username_exists = User::where('username', $username)->first();
                 while ($username_exists) {
                     $username = $orig_username . "_" . $i++;
                     $username_exists = User::where('username', $username)->first();
                 }
                 $user->username = $username;
                 $user->twitter_user_id = $twitter_user->id;
                 $user->name = $twitter_user->name;
                 $user->created_timestamp_utc = time();
             }
             $user->updated_timestamp_utc = time();
             $user->most_recent_ip = request()->ip();
             $user->save();
         }
         Auth::login($user);
         return view('auth/killwindow');
     } else {
         return abort(401, 'Apparently, Twitter didn\'t like you.');
     }
 }
Beispiel #2
0
 /**
  * フォローしているユーザを登録
  * @return [type] [description]
  */
 public function createFrends($cursor = 0)
 {
     $param = array('screen_name' => env('SCREEN_NAME'), 'count' => 200);
     if ($cursor) {
         $param['cursor'] = $cursor;
     }
     $friends = $this->get('friends/list', $param);
     // var_dump($friends);exit;
     $now = \Carbon\Carbon::now('utc')->toDateTimeString();
     foreach ($friends->users as $key => $value) {
         $attribute = ["name" => $value->name, "screen_name" => $value->screen_name, "description" => $value->description, 'created_at' => $now, 'updated_at' => $now];
         // TODO: 性能はあまり良くない
         \App\Models\TwitterUser::updateOrCreate(['id' => $value->id], $attribute);
     }
     if ($friends->next_cursor) {
         self::createFrends($friends->next_cursor);
     }
 }
Beispiel #3
0
 /**
  * いずれかのリストに属している全てのユーザを取得する
  * 事前にcreateOwnerList()を実行してDBにデータを作っておく
  * @return [type] [description]
  */
 public function getExistListMember()
 {
     $members = \App\Models\TwitterUser::where('list_id', '!=', 0)->lists('screen_name', 'id')->toArray();
     return $members;
 }
Beispiel #4
0
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function handle()
 {
     $this->info('Start');
     \Log::info("Start");
     $list = \Twitter::call("Friend")->createFrends();
     exit;
     // まずはリストとユーザを作成する
     \Twitter::call("Friend")->createFrends();
     \Twitter::call("List")->createOwnerList();
     \Twitter::call("List")->createAllListMembers();
     $this->info('end');
     exit;
     // 特定のリストから取得 とりあえず保存
     $friends = \Twitter::call("List")->getListMembers(791288757311811584);
     $screen_name = "etc";
     foreach ($friends as $user_id => $value) {
         try {
             $user = \App\Models\TwitterUser::find($user_id);
             $since_id = $user->since_id;
             $list_id = $user->list_id;
             $filePath = "/vagrant/image/{$screen_name}/{$list_id}/";
             // echo $filePath;exit;
             // $this->info('create:'.$value["screen_name"].":".$user_id.' since_id:'.$since_id);
             $this->info('create:' . $value . ":" . $user_id . ' since_id:' . $since_id);
             $timeline = \Twitter::call("Status")->getAllTimeline($user_id, 0, $since_id);
             // タイムラインが0件
             if (!count($timeline)) {
                 continue;
             }
             $since_id = $timeline[0]->id;
             \Twitter::call("Timeline")->setFilePath($filePath);
             \Twitter::call("Timeline")->createImage($timeline);
             $user->since_id = $since_id;
             $user->save();
         } catch (\Exception $e) {
             \Log::error($e->getMessage());
             echo $e->getMessage() . "\n";
         }
     }
     // 有効になっているリストから取得
     $friends = \Twitter::call("List")->getValidListMember();
     // var_dump($friends);exit;
     $screen_name = env('SCREEN_NAME');
     foreach ($friends as $user_id => $value) {
         try {
             $user = \App\Models\TwitterUser::find($user_id);
             $since_id = $user->since_id;
             $list_id = $user->list_id;
             $filePath = "/vagrant/image/{$screen_name}/{$list_id}/";
             // echo $filePath;exit;
             // $this->info('create:'.$value["screen_name"].":".$user_id.' since_id:'.$since_id);
             $this->info('create:' . $value . ":" . $user_id . ' since_id:' . $since_id);
             $timeline = \Twitter::call("Status")->getAllTimeline($user_id, 0, $since_id);
             // タイムラインが0件
             if (!count($timeline)) {
                 continue;
             }
             $since_id = $timeline[0]->id;
             \Twitter::call("Timeline")->setFilePath($filePath);
             \Twitter::call("Timeline")->createImage($timeline);
             $user->since_id = $since_id;
             $user->save();
         } catch (\Exception $e) {
             \Log::error($e->getMessage());
             echo $e->getMessage() . "\n";
         }
     }
     \Log::info("end");
     $this->info('end');
 }