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());
|
FacebookSdk.sdkInitialize(getContext());
|
||||||
callbackManager = CallbackManager.Factory.create();
|
callbackManager = CallbackManager.Factory.create();
|
||||||
initFacebookButton();
|
initFacebookButton();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -112,13 +110,13 @@ public class FacebookButtonFragment extends Fragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onCancel() {
|
public void onCancel() {
|
||||||
Log.d("FB","OnCancel");
|
Log.d("FB","OnCancel");
|
||||||
((LoginActivity) getActivity()).showMessage("Facebook LogIn canceled");
|
((LoginActivity) getActivity()).showMessage("Facebook LogIn canceled. Please use E-Mail instead.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(FacebookException exception) {
|
public void onError(FacebookException exception) {
|
||||||
Log.d("FB","OnError");
|
Log.d("FB","OnError: " + exception.toString());
|
||||||
((LoginActivity) getActivity()).showMessage("Error while SignIn: ErrorMsg: " + 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() {
|
GraphRequest request = GraphRequest.newMeRequest(accesstoken, new GraphRequest.GraphJSONObjectCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onCompleted(JSONObject objects, GraphResponse response) {
|
public void onCompleted(JSONObject objects, GraphResponse response) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
((LoginActivity) getActivity()).handleSocialMediaLogin(objects.getString("id"), "facebook", objects.getString("first_name"), objects.getString("email"));
|
((LoginActivity) getActivity()).handleSocialMediaLogin(objects.getString("id"), "facebook", objects.getString("first_name"), objects.getString("email"));
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
|
|||||||
@@ -2,7 +2,10 @@ package org.deke.risk.riskahead.fragment;
|
|||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentSender;
|
import android.content.IntentSender;
|
||||||
import android.content.pm.PackageManager;
|
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 com.google.android.gms.plus.model.people.Person;
|
||||||
|
|
||||||
import org.deke.risk.riskahead.LoginActivity;
|
import org.deke.risk.riskahead.LoginActivity;
|
||||||
|
import org.deke.risk.riskahead.MainActivity;
|
||||||
import org.deke.risk.riskahead.R;
|
import org.deke.risk.riskahead.R;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -82,11 +86,28 @@ public class GooglePlusButtonFragment extends Fragment implements GoogleApiClien
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void performClickAction() {
|
private void performClickAction() {
|
||||||
|
Log.d(TAG,"Click on Google+ Button performed");
|
||||||
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
|
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{
|
}else{
|
||||||
|
Log.d(TAG,"Permission already granted");
|
||||||
|
|
||||||
if(mGoogleApiClient.isConnected()){
|
if(mGoogleApiClient.isConnected()){
|
||||||
Person currentPerson = getProfileInformation();
|
Person currentPerson = getProfileInformation();
|
||||||
((LoginActivity) getActivity()).handleSocialMediaLogin(currentPerson.getId(),"google",currentPerson.getDisplayName(),Plus.AccountApi.getAccountName(mGoogleApiClient));
|
((LoginActivity) getActivity()).handleSocialMediaLogin(currentPerson.getId(),"google",currentPerson.getDisplayName(),Plus.AccountApi.getAccountName(mGoogleApiClient));
|
||||||
@@ -97,28 +118,28 @@ public class GooglePlusButtonFragment extends Fragment implements GoogleApiClien
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode,
|
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
||||||
String permissions[], int[] grantResults) {
|
Log.d(TAG,"RequestCode: "+requestCode);
|
||||||
|
|
||||||
switch (requestCode) {
|
switch (requestCode) {
|
||||||
case MY_PERMISSIONS_REQUEST_ACCOUNTS: {
|
case MY_PERMISSIONS_REQUEST_ACCOUNTS: {
|
||||||
// If request is cancelled, the result arrays are empty.
|
// If request is cancelled, the result arrays are empty.
|
||||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
|
Log.d(TAG,"Permission granted");
|
||||||
|
|
||||||
if(mGoogleApiClient.isConnected()){
|
if(mGoogleApiClient.isConnected()){
|
||||||
Person currentPerson = getProfileInformation();
|
Person currentPerson = getProfileInformation();
|
||||||
((LoginActivity) getActivity()).handleSocialMediaLogin(currentPerson.getId(),"google",currentPerson.getDisplayName(),Plus.AccountApi.getAccountName(mGoogleApiClient));
|
((LoginActivity) getActivity()).handleSocialMediaLogin(currentPerson.getId(),"google",currentPerson.getDisplayName(),Plus.AccountApi.getAccountName(mGoogleApiClient));
|
||||||
}else{
|
}else{
|
||||||
signInWithGplus();
|
signInWithGplus();
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} 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) {
|
if (!mIntentInProgress) {
|
||||||
|
|
||||||
mConnectionResult = result;
|
mConnectionResult = result;
|
||||||
|
|
||||||
if (mSignInClicked) {
|
if (mSignInClicked) {
|
||||||
@@ -171,7 +191,6 @@ public class GooglePlusButtonFragment extends Fragment implements GoogleApiClien
|
|||||||
resolveSignInError();
|
resolveSignInError();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -187,8 +206,6 @@ public class GooglePlusButtonFragment extends Fragment implements GoogleApiClien
|
|||||||
mGoogleApiClient.connect();
|
mGoogleApiClient.connect();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sign-in into google
|
* Sign-in into google
|
||||||
* */
|
* */
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ public class ProfileStatisticsFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private StringRequest getStringRequestProfileStats() {
|
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
|
@Override
|
||||||
public void onResponse(String response) {
|
public void onResponse(String response) {
|
||||||
@@ -96,11 +96,12 @@ public class ProfileStatisticsFragment extends Fragment {
|
|||||||
JSONObject jObj = new JSONObject(response);
|
JSONObject jObj = new JSONObject(response);
|
||||||
boolean error = jObj.getBoolean("error");
|
boolean error = jObj.getBoolean("error");
|
||||||
if (!error) {
|
if (!error) {
|
||||||
jObj = jObj.getJSONObject("msg");
|
|
||||||
points.setText(jObj.getString("points"));
|
|
||||||
ranking.setText(jObj.getString("rank"));
|
|
||||||
posts.setText(jObj.getString("numberOfPosts"));
|
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");
|
JSONArray jSubs = jObj.getJSONArray("subs");
|
||||||
|
|
||||||
@@ -158,7 +159,6 @@ public class ProfileStatisticsFragment extends Fragment {
|
|||||||
@Override
|
@Override
|
||||||
protected Map<String, String> getParams() {
|
protected Map<String, String> getParams() {
|
||||||
Map<String, String> params = new HashMap<>();
|
Map<String, String> params = new HashMap<>();
|
||||||
params.put("tag", AppConfig.REST_GET_USERSTATS);
|
|
||||||
params.put("uid", parent.user.get(SessionManager.KEY_UID));
|
params.put("uid", parent.user.get(SessionManager.KEY_UID));
|
||||||
params.put("token", parent.user.get(SessionManager.TOKEN));
|
params.put("token", parent.user.get(SessionManager.TOKEN));
|
||||||
params.put("userstatsid", uid);
|
params.put("userstatsid", uid);
|
||||||
|
|||||||
Reference in New Issue
Block a user