Bugfixing: Social Media Login more reliable, especially with Google+
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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,12 +118,14 @@ 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();
|
||||
@@ -112,13 +135,11 @@ public class GooglePlusButtonFragment extends Fragment implements GoogleApiClien
|
||||
}
|
||||
|
||||
} 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
|
||||
* */
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user