public function post_twitter($twitter_access_token, $status) { $result = array('success' => false); try { $access_token = json_decode($twitter_access_token); $connection = new \Abraham\TwitterOAuth\TwitterOAuth(TWITTER_KEY, TWITTER_SECRET_KEY, $access_token->oauth_token, $access_token->oauth_token_secret); $content = $connection->post("statuses/update", ["status" => $status]); if (isset($content->id_str)) { $result['success'] = true; $result['link'] = "https://twitter.com/" . $content->user->screen_name . "/status/" . $content->id; } } catch (Exception $e) { $result['message'] = $e->getMessage(); } return $result; }
}); $app->post('/authTwitter', function () { session_start(); $request = \Symfony\Component\HttpFoundation\Request::createFromGlobals(); $_SESSION['image'] = $request->request->get('photo'); $_SESSION['text'] = $request->request->get('text'); $connection = new \Abraham\TwitterOAuth\TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET); $request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => TWITTER_OAUTH_ENDPOINT)); $_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret']; $authURL = $connection->url('oauth/authorize', array('oauth_token' => $request_token['oauth_token'])); $response = new \Symfony\Component\HttpFoundation\JsonResponse(['url' => $authURL]); $response->send(); }); $app->get('/shareTwitter', function () { session_start(); $request = \Symfony\Component\HttpFoundation\Request::createFromGlobals(); $_SESSION['oauth_token'] = $request->query->get('oauth_token'); $_SESSION['oauth_verifier'] = $request->query->get('oauth_verifier'); $connection = new \Abraham\TwitterOAuth\TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); $access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_SESSION['oauth_verifier'])); $_SESSION['oauth_token'] = $access_token['oauth_token']; $_SESSION['oauth_token_secret'] = $access_token['oauth_token_secret']; $_SESSION['twitter_user_id'] = $access_token['user_id']; $connection = new \Abraham\TwitterOAuth\TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); $imageURL = $_SESSION['image']; $photo = $connection->upload('media/upload', ['media' => $imageURL]); $statues = $connection->post("statuses/update", ['status' => $_SESSION['text'], 'media_ids' => $photo->media_id]); $response = new \Symfony\Component\HttpFoundation\RedirectResponse('https://twitter.com'); $response->send(); }); $app->run();
$accessToken = session('access_token'); if (!session()->has('twitter_account')) { $connection = new Abraham\TwitterOAuth\TwitterOAuth(env('TWITTER_CONSUMER_KEY'), env('TWITTER_CONSUMER_SECRET'), $accessToken['oauth_token'], $accessToken['oauth_token_secret']); $twitterAccount = $connection->get("account/verify_credentials"); session(['twitter_account' => $twitterAccount]); } $twitterAccount = session('twitter_account'); return view('twitter.index', compact('twitterAccount')); }); Route::post('/twitter-status', ['as' => 'twitter_status_update', function (Illuminate\Http\Request $request) { $connection = new Abraham\TwitterOAuth\TwitterOAuth(env('TWITTER_CONSUMER_KEY'), env('TWITTER_CONSUMER_SECRET'), session('access_token.oauth_token'), session('access_token.oauth_token_secret')); $statues = $connection->post("statuses/update", ["status" => $request->input('status')]); if ($connection->getLastHttpCode() == 200) { return redirect('twitter-profile')->with("message", "Update status success!")->with("success", true); } return redirect('twitter-profile')->with('message', 'Error: can"t update status')->with('success', false); }]); Route::post('/twitter-send-message', ['as' => 'twitter_send_message', function (Illuminate\Http\Request $request) { $connection = new Abraham\TwitterOAuth\TwitterOAuth(env('TWITTER_CONSUMER_KEY'), env('TWITTER_CONSUMER_SECRET'), session('access_token.oauth_token'), session('access_token.oauth_token_secret')); $fields = ['message' => $request->input('message'), 'to' => $request->input('to')]; $request = $connection->post("direct_messages/new", $fields); if ($connection->getLastHttpCode() == 200) { return redirect('twitter-profile')->with('message', "Message sent to @" . $request->input('to'))->with('success', true); } return redirect('twitter-profile')->with('message', "Send message failed!")->with('success', false); }]); Route::get('/logout', ['as' => 'logout_path', function (Illuminate\Http\Request $request) { session()->forget('twitter_account'); session()->forget('access_token'); return redirect(route('login_path')); }]);