2016-08-09 2 views
0

サーバからプレマイドタスクの進行状況を追跡するアンドロイドアプリを作成しています。 アプリケーションはローカルプロファイルを作成し、サーバーからタスクをダウンロードし、ユーザーが行った進捗状況を保存します(サブタスクを実行している場合)。 私は、この進捗状況をサーバーにアップロードして、複数のデバイス間で同期をとることができます。 最初に、ユーザーアカウントを作成し、最初のログオン後にサーバーに対して認証するランダムトークンを作成して、クライアントにパスワードを保存しないようにしました。 しかし、OAuth2のようなものを使ってGoogleアカウントでアプリにログインし、Googleが提供するID /電子メールアドレスを使って自分のサーバーに情報を保存することができると考えました。アンドロイドアプリとラベールサーバの認証にgoogle-ouaht-2.0を使用する

問題は私が理解することができませんどのようにこれを設定します。 私は簡単にログインするだけで、サーバーに電子メールを送信し、そのIDにデータを保存することができます。 問題はGoogleトークンを保存することですか? クライアント側で保存して、後で認証するためのAPIリクエストを送信する必要はありますか? どのようにトークンを更新する必要がありますか?

私が欲しいの

は...クライアントとサーバ間の通信を認証するには、GoogleからのOAuthを使用する方法です

NB

私はauthおよび検索以外のものについては、GoogleのOAuthを使うつもりはありませんユーザーの電子メールアドレス..(Google APIや何もありません)。

答えて

0

これがあなたが求める答えであるかどうかわかりませんが、私はこの解決策を最近のプロジェクトで使用しました。

あなたのLaravel環境にthisパッケージを含めると、あらゆるOAuthプロバイダを超簡単に扱うことができます。 2つのルート(ログイン用とOAuthコールバック用)を作成し、トークンからセッション管理までのすべてを処理します。

特定の方法でコールバックを処理することによって、データベースに格納される方法とデータを指定できます。私はFacebookのログインスキームのために書いたこのコードをチェックアウト:あなたは現在ログインしている人をチェックしたい場合は

try { 
    SocialAuth::login('facebook', function($user, $details){ 
     if(!$details->full_name && !$details->email && !$details->avatar){ 
      throw new InvalidAuthorizationCodeException(); 
     } 
     $user->name = $details->full_name; 
     $user->email = $details->email; 
     $user->avatar = $details->avatar . "?type=large"; 
     $user->save(); 
    }); 
} catch (ApplicationRejectedException $e) { 
    // User rejected application 
    return view('errors.facebook'); 
} catch (InvalidAuthorizationCodeException $e) { 
    // Authorization was attempted with invalid 
    // code,likely forgery attempt 
    return view('errors.facebook'); 
} 

return Redirect::intended(); 

最後に、簡単な$user = Auth::user();は十分です。 APIがLaravelの認証ミドルウェアによって保護されていることを確認する場合は、データベースに設定したIDを使用してユーザーを識別することができます。

関連する問題