/** * Prepare the OAuth client before sending a request * * @param string $provider_id * @throws \Exception */ protected function prepareRequest($provider_id) { $userProvider = $this->providerRepository->get($provider_id); if (empty($userProvider['token'])) { throw new \Exception('Invalid access token'); } $this->token = $userProvider['token']; }
/** * POST: / * * @return redirect(/) */ public function postIndex() { $user = Auth::user(); $message = Input::get('message'); $services = Input::get('services'); foreach ($services as $providerId => $serviceEnabled) { $bIsEnabled = (bool) $serviceEnabled; if ($bIsEnabled === true) { $provider = $this->providerRepository->get($providerId); $post = $this->postRepository->createMessage($provider, $message); $this->dispatch(new PublishMessage($post)); } } return redirect('/'); }
/** * Process data returned as callback from the client * * @param string $user_id * @param string $profile_id * @param array $data = [] * @return \App\Models\Provider * @throws \Exception */ public function handleCallback($user_id, $profile_id, $data = []) { if (empty($data['oauth_token']) || empty($data['oauth_verifier'])) { throw new \Exception('Token validation failed'); } $request_token = $data['oauth_token']; $request_token_verifier = $data['oauth_verifier']; $access_token = $this->getAccessToken($request_token, $request_token_verifier); $provider = $this->providerRepository->create($user_id, $profile_id, ServiceTwitter::SERVICE_CODE, ['request_token' => $request_token, 'request_token_verifier' => $request_token_verifier, 'oauth_token' => $access_token['oauth_token'], 'oauth_token_secret' => $access_token['oauth_token_secret'], 'expires_at' => ServiceTwitter::TOKEN_TTL + time()]); $userInfo = $this->getUserInfo($provider['_id']); return $this->providerRepository->create($user_id, $profile_id, ServiceTwitter::SERVICE_CODE, ['vendor_id' => (string) $userInfo->id, 'name' => $userInfo->name, 'profile_image_url' => $userInfo->profile_image_url]); }