Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parse Google plus login

I am using Parse, where are users are able to login using Facebook, Twitter, and Google+. As of now, only Facebook and Twitter is fully functional.

I have managed to login using Facebook and Twitter in the following way:

private void onLoginButtonClicked() {
        LoginActivity.this.progressDialog = ProgressDialog.show(
                LoginActivity.this, "", "Logging in...", true);
        List<String> permissions = Arrays.asList("public_profile", "user_about_me",
                "user_relationships", "user_birthday", "user_location");
        ParseFacebookUtils.logIn(permissions, this, new LogInCallback() {
            @Override
            public void done(ParseUser user, ParseException err) {
                LoginActivity.this.progressDialog.dismiss();
                if (user == null) {
                    Log.d(IntegratingFacebookTutorialApplication.TAG,
                            "Uh oh. The user cancelled the Facebook login.");
                } else if (user.isNew()) {
                    Log.d(IntegratingFacebookTutorialApplication.TAG,
                            "User signed up and logged in through Facebook!");
                    showUserDetailsActivity();

                } else {
                    Log.d(IntegratingFacebookTutorialApplication.TAG,
                            "User logged in through Facebook!");
                moodpage();             

                }
            }
        });
    }

    private void onTwitterButtonClicked() {
        ParseTwitterUtils.logIn(this, new LogInCallback() {
              @Override
              public void done(ParseUser user, ParseException err) {
                if (user == null) {
                  Log.d("MyApp", "Uh oh. The user cancelled the Twitter login.");
                } else if (user.isNew()) {
                  Log.d("MyApp", "User signed up and logged in through Twitter!");
                  showUserDetailsActivity();        
                  } else {
                  Log.d("MyApp", "User logged in through Twitter!");
                  moodpage();               }
              }

            });
    }

I am trying to figure out to achieve this with Google+ through parse. Someone has suggested for me to look into Parse Rest API, however, I am not familiar with it, and need more guidance.

Any clarification will be appreciated.

like image 446
code_legend Avatar asked Oct 04 '14 21:10

code_legend


1 Answers

as per this:

http://blog.parse.com/announcements/adding-third-party-authentication-to-your-web-app/

and this:

https://parse.com/tutorials/adding-third-party-authentication-to-your-web-app

And my understanding of them

You just need to generate a password using some algorithm in your app or your cloud/backend, after successfully logging in with Google+ / Github / Whatever

a simeple implementation (but it's not secured to have it in your app):

// given Google Plus login (Using their Api) i.e. no Parse yet at this point
int id = 12345; // assume that this is  google+ id (After successfully logging in)

ParseUser user = new ParseUser();
user.setUsername("google-plus-" + String.valueOf(id));
user.setPassword(hashMyPassword(id)); // Create password based on the id
user.setEmail("[email protected]");

user.signUpInBackground(new SignUpCallback() {
  public void done(ParseException e) {
    if (e == null) {
      // Hooray! Let them use the app now.
    } else {
      // Sign up didn't succeed. Look at the ParseException
      // to figure out what went wrong
    }
  }
});

One important thing about this solution:

It's not secured to just use the id / password based on the id in your app, a better solution would be to send Google+ Token / UserId to backend/cloud then the Backend/Cloud verifies that this Token/Id are valid, then create the username/password out of it and exchange it with Parse User.

I hope you got the Idea.

like image 64
Shehabic Avatar answered Oct 16 '22 07:10

Shehabic