2017-06-15 1 views
-1

J'ai une application Android existante que vous pouvez créer et comptabiliser et vous connecter via nom d'utilisateur/email et mot de passe et maintenant je veux être en mesure de créer un compte et de connexion avec des plateformes sociales comme Google ou Facebook.Ajouter une connexion sociale (Google et facebook) à une connexion Android existante

Mon application Android se connecte à la base de données via une API NodeJS que nous avons créée. Cette API a une route xxxxx/authentifier où vous envoyez votre email/nom d'utilisateur et mot de passe et il vous renvoie un jeton.

Ma question est comment je peux ajouter Google et Facebook de connexion à cette configuration que nous avons et ajouter la gestion de session.

J'ai essayé de faire this et j'ai été en mesure de me connecter via Google, mais mon problème est que toutes mes requêtes API sont protégées par des jetons et je suis coincé ici en ce moment.

Je ne sais pas si je dois modifier l'API afin d'accepter des jetons de Google et Facebook ou essayer de tout gérer au niveau de l'application.

Toute lumière ou conseil à ce sujet seront vraiment appréciés.

Merci.

+0

Votre api envoie jeton sur la réponse lorsque vous avez le compte authentifié, si elle est si alors, si quelqu'un essaie de se connecter avec facebook ou google d'abord vérifier l'e-mail associée à la DB, sinon, les rediriger vers l'activité d'inscription pour créer un compte .. plus tard lier leur compte et la prochaine fois s'ils essayent de se connecter avec fb ou google ... ce sera sur le DB donc les rediriger vers la page d'accueil en fournissant le jeton –

Répondre

1

ceci est pour google plus

Vous devez ajouter une bibliothèque d'autorisation ans dans votre projet.

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

J'ai mis à jour le lien sur mon message. J'ai déjà eu ce que vous mentionnez et je peux me connecter via google, ma question est comment je peux obtenir un token pour accéder à mes autres routes API qui sont protégées par jeton et normalement ce jeton est donné lorsque je me connecte avec email et mot de passe via mon API. –