Bugfixing: Social Media Login more reliable, especially with Google+

This commit is contained in:
Dennis Thiessen
2017-05-27 23:55:05 +02:00
parent 42db486ce4
commit 41bbc671ca
3 changed files with 40 additions and 26 deletions

View File

@@ -76,8 +76,6 @@ public class FacebookButtonFragment extends Fragment {
FacebookSdk.sdkInitialize(getContext());
callbackManager = CallbackManager.Factory.create();
initFacebookButton();
}
@Override
@@ -112,13 +110,13 @@ public class FacebookButtonFragment extends Fragment {
@Override
public void onCancel() {
Log.d("FB","OnCancel");
((LoginActivity) getActivity()).showMessage("Facebook LogIn canceled");
((LoginActivity) getActivity()).showMessage("Facebook LogIn canceled. Please use E-Mail instead.");
}
@Override
public void onError(FacebookException exception) {
Log.d("FB","OnError");
((LoginActivity) getActivity()).showMessage("Error while SignIn: ErrorMsg: " + exception.toString());
Log.d("FB","OnError: " + exception.toString());
((LoginActivity) getActivity()).showMessage("Could not log in with Facebook. Please use E-Mail instead or try again later.");
}
});
}
@@ -127,7 +125,6 @@ public class FacebookButtonFragment extends Fragment {
GraphRequest request = GraphRequest.newMeRequest(accesstoken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject objects, GraphResponse response) {
try {
((LoginActivity) getActivity()).handleSocialMediaLogin(objects.getString("id"), "facebook", objects.getString("first_name"), objects.getString("email"));
} catch (JSONException e) {

View File

@@ -2,7 +2,10 @@ package org.deke.risk.riskahead.fragment;
import android.Manifest;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentSender;
import android.content.pm.PackageManager;
@@ -26,6 +29,7 @@ import com.google.android.gms.plus.Plus;
import com.google.android.gms.plus.model.people.Person;
import org.deke.risk.riskahead.LoginActivity;
import org.deke.risk.riskahead.MainActivity;
import org.deke.risk.riskahead.R;
/**
@@ -82,11 +86,28 @@ public class GooglePlusButtonFragment extends Fragment implements GoogleApiClien
}
private void performClickAction() {
Log.d(TAG,"Click on Google+ Button performed");
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.GET_ACCOUNTS}, MY_PERMISSIONS_REQUEST_ACCOUNTS);
Log.d(TAG,"Permission not granted yet - request now");
// Should we show an explanation?
AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create();
alertDialog.setTitle("Request Permission");
alertDialog.setMessage("Google needs permission to see your profile (Contact List) in order to enable log-in with Google+. However, if you do not grant permission, log in with Google+ will not be available.");
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
requestPermissions(new String[]{Manifest.permission.GET_ACCOUNTS}, MY_PERMISSIONS_REQUEST_ACCOUNTS);
}
});
alertDialog.show();
}else{
Log.d(TAG,"Permission already granted");
if(mGoogleApiClient.isConnected()){
Person currentPerson = getProfileInformation();
((LoginActivity) getActivity()).handleSocialMediaLogin(currentPerson.getId(),"google",currentPerson.getDisplayName(),Plus.AccountApi.getAccountName(mGoogleApiClient));
@@ -97,28 +118,28 @@ public class GooglePlusButtonFragment extends Fragment implements GoogleApiClien
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
Log.d(TAG,"RequestCode: "+requestCode);
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_ACCOUNTS: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG,"Permission granted");
if(mGoogleApiClient.isConnected()){
Person currentPerson = getProfileInformation();
((LoginActivity) getActivity()).handleSocialMediaLogin(currentPerson.getId(),"google",currentPerson.getDisplayName(),Plus.AccountApi.getAccountName(mGoogleApiClient));
}else{
signInWithGplus();
signInWithGplus();
}
} else {
Log.d(TAG,"Permission not granted - what now?");
Toast.makeText(mContext, "Could not log in with Google+. Please use E-Mail instead or try again later.",
Toast.LENGTH_LONG).show();
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
@@ -162,7 +183,6 @@ public class GooglePlusButtonFragment extends Fragment implements GoogleApiClien
}
if (!mIntentInProgress) {
mConnectionResult = result;
if (mSignInClicked) {
@@ -171,7 +191,6 @@ public class GooglePlusButtonFragment extends Fragment implements GoogleApiClien
resolveSignInError();
}
}
}
@Override
@@ -187,8 +206,6 @@ public class GooglePlusButtonFragment extends Fragment implements GoogleApiClien
mGoogleApiClient.connect();
}
/**
* Sign-in into google
* */

View File

@@ -86,7 +86,7 @@ public class ProfileStatisticsFragment extends Fragment {
}
private StringRequest getStringRequestProfileStats() {
return new StringRequest(Request.Method.POST, AppConfig.URL_ENCRYPTED, new Response.Listener<String>() {
return new StringRequest(Request.Method.POST, AppConfig.REST_GET_USERSTATS, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
@@ -96,11 +96,12 @@ public class ProfileStatisticsFragment extends Fragment {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
if (!error) {
jObj = jObj.getJSONObject("msg");
points.setText(jObj.getString("points"));
ranking.setText(jObj.getString("rank"));
posts.setText(jObj.getString("numberOfPosts"));
txtMemberSince.setText(jObj.getString("created_at"));
JSONObject subJObj = jObj.getJSONObject("msg");
points.setText(subJObj.getString("points"));
ranking.setText(subJObj.getString("rank"));
txtMemberSince.setText(subJObj.getString("created_at"));
JSONArray jSubs = jObj.getJSONArray("subs");
@@ -158,7 +159,6 @@ public class ProfileStatisticsFragment extends Fragment {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("tag", AppConfig.REST_GET_USERSTATS);
params.put("uid", parent.user.get(SessionManager.KEY_UID));
params.put("token", parent.user.get(SessionManager.TOKEN));
params.put("userstatsid", uid);