2017-06-15 17 views
-1

私は既存のAndroidアプリを持っていますが、ユーザー名とメールアドレスとパスワードを使って作成してログインしてログインできるようになりました。 GoogleやFacebookなどのソーシャルプラットフォームを利用しています。既存のAndroidログインにソーシャルログイン(GoogleとFacebook)を追加

私のAndroidアプリケーションは、私たちが作ったNodeJS APIを通してDBに接続します。このAPIには、電子メール/ユーザー名とパスワードを送信するxxxxx/authenticateルートがあり、トークンが返されます。

私の質問は、この設定にGoogleとFacebookのログインを追加してセッション管理を追加する方法です。

私はthisを実行しようとしましたが、Googleからログインできましたが、私の問題はすべて私のAPIクエリがトークンで保護されていることです。

GoogleやFacebookのトークンを受け入れるためにAPIを変更する必要があるのか​​、それともAppレベルですべて処理することを試みるべきかわかりません。

この問題に関するご意見、ご感想は本当にありがとうございます。

ありがとうございました。

+0

あなたのAPIは、応答にトークンを送信しますそれらをサインアップしてアカウントを作成してください。後で自分のアカウントと次回にfbやgoogleでログインしようとすると... DB上にあるのでトークンをホームページにリダイレクトします –

答えて

1

これは、Googleのためにあるプラス

は、あなたがあなたのプロジェクトにいくつかの許可ANSライブラリを追加する必要があります。誰かFacebookでログインするか、ユーザDBに関連付けられた電子メールをチェックするすべての最初のグーグルしようとすると、それは、その後、その後、もしそうならない場合は、認証済みのアカウントを持っている場合

public class MainActivity extends AppCompatActivity implements View.OnClickListener, GoogleApiClient.OnConnectionFailedListener { 

     private SignInButton signInButton; 
     private GoogleSignInOptions gso; 
     private GoogleApiClient mGoogleApiClient; 
     private int RC_SIGN_IN = 100; 
     private TextView textViewName; 
     private TextView textViewEmail; 
     private NetworkImageView profilePhoto; 
     private ImageLoader imageLoader; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      textViewName = (TextView) findViewById(R.id.textViewName); 
      textViewEmail = (TextView) findViewById(R.id.textViewEmail); 
    //  profilePhoto = (NetworkImageView) findViewById(R.id.profileImage); 
      gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().build(); 
      signInButton = (SignInButton) findViewById(R.id.sign_in_button); 
      signInButton.setSize(SignInButton.SIZE_WIDE); 
      signInButton.setScopes(gso.getScopeArray()); 
      mGoogleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */). 
        addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
        .build(); 
      signInButton.setOnClickListener(this); 
     } 
     private void signIn() { 
      Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
      startActivityForResult(signInIntent, RC_SIGN_IN); 
     } 
     public void sign_out(View view) { 
      Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
        new ResultCallback<Status>() { 
         @Override 
         public void onResult(Status status) { 
          Toast.makeText(getApplicationContext(), "SIGN OUT SUCESSFULLY", Toast.LENGTH_LONG).show(); 
          textViewName.setText(""); 
          textViewEmail.setText(""); 
         } 
        }); 
    //  Auth.GoogleSignInApi.revokeAccess(mGoogleApiClient).setResultCallback(
    //    new ResultCallback<Status>() { 
    //     @Override 
    //     public void onResult(Status status) { 
    //      // ... 
    //     } 
    //    }); 

     } 
     @Override 
     public void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      if (requestCode == RC_SIGN_IN) { 
       GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
       handleSignInResult(result); 
      } 
     } 

     private void handleSignInResult(GoogleSignInResult result) { 
      if (result.isSuccess()) { 
       GoogleSignInAccount acct = result.getSignInAccount(); 
       textViewName.setText(acct.getDisplayName()); 
       textViewEmail.setText(acct.getEmail()); 
    //   Toast.makeText(this,acct.get) 

       //Initializing image loader 
    //   imageLoader = CustomVolleyRequest.getInstance(this.getApplicationContext()) 
    //     .getImageLoader(); 
    // 
    //   imageLoader.get(acct.getPhotoUrl().toString(), 
    //     ImageLoader.getImageListener(profilePhoto, 
    //       R.mipmap.ic_launcher, 
    //       R.mipmap.ic_launcher)); 
    // 
    //   //Loading image 
    //   profilePhoto.setImageUrl(acct.getPhotoUrl().toString(), imageLoader); 

      } else { 
       Toast.makeText(this, "Login Failed", Toast.LENGTH_LONG).show(); 
      } 
     } 

     @Override 
     public void onClick(View v) { 
      if (v == signInButton) { 
       signIn(); 
      } 
     } 

     @Override 
     public void onConnectionFailed(ConnectionResult connectionResult) { 

     } 
    } 
+0

私は私のポストのリンク。私はすでにあなたが言及したと私はGoogleを介してログインすることができる、私の質問はどのように私はトークン保護されている私の他のAPIルートにアクセスするためのトークンを取得することができます私のAPIを使って電子メールとパスワードを入力してください。 –