0

I have crated login application which is a part of my native application building process.There are few end points which uses login session.I am getting successful result for login endpoint but It was not forwarding its session to next activity.For example: If user is loggedIn successful he can access rest of features in further activities. But while I'm trying to switch activity I am getting "User Needs to login".

MainActivity.java

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        jsonResponse = new LoginPOJO();

        // UserLogin Field
        etUserName = (EditText) findViewById(R.id.etUserName);
        // UserLogin Password
        etPassword = (EditText) findViewById(R.id.etPassword);
        // Login Button Image
        btnLogin = (ImageView) findViewById(R.id.btnLogin);
        btnLogin.setOnClickListener(this);
        // User SignUp Button Image
        ImageView btnSignUp = (ImageView) findViewById(R.id.btnSignUp);
        btnSignUp.setOnClickListener(this);
        // Forget Password Textbutton
        TextView frgtPassword = (TextView) findViewById(R.id.forgetpassword);
        frgtPassword.setOnClickListener(this);
        // Skip for now button
        final TextView skipfornow = (TextView) findViewById(R.id.skipnow);
        skipfornow.setOnClickListener(this);

       }
private void logIn(final String username, final String password) {
        final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        progressDialog.setMessage("Logging you in...");
        progressDialog.setIndeterminate(true);
        progressDialog.setCancelable(false);
        progressDialog.show();
        String UPLOAD_URL = "http://xxxxx-dev.elasticbeanstalk.com/api/v1/login";
        final StringRequest stringRequest = new StringRequest(Request.Method.POST, UPLOAD_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String s) {
                        //Dismissing the progress dialog
                        progressDialog.dismiss();
                        // Getting the final Json Object
                        JSONObject parentObject;
                        try {
                            parentObject = new JSONObject(s);

                            LoginPOJO.setCode(parentObject.getString("code"));

                            // Getting the data from Data Json Object
                            JSONObject dataObject = parentObject.getJSONObject("data");

                            // Getting data from Geo object
                            JSONObject geoObject = dataObject.getJSONObject("geo");

                            // Getting data from businesses Array
                            JSONArray businessesArray = dataObject.getJSONArray("businesses");

                            // Getting data from Meta Object
                            JSONObject metaObject = parentObject.getJSONObject("meta");

                            startActivity(new Intent(MainActivity.this, PromotionsFeedActivity.class));
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                        //Showing toast message of the response
                        Log.i("TAG", "onResponse: " + s);

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        //Dismissing the progress dialog
                        progressDialog.dismiss();
                        //Showing snackbar
                        Toast.makeText(MainActivity.this, "Connection Problem", Toast.LENGTH_SHORT).show();
                    }
                }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                //Converting Bitmap to String
                //Creating parameters
                Map<String, String> params = new Hashtable<>();
                params.put("apikey", Utilities.API_KEY);
                params.put("secret", Utilities.SECRET_KEY);
                params.put("email", username);
                params.put("password",password);
                //Adding parameters
                //returning parameters
                return params;
            }
        };
        //Creating a Request Queue
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        //Adding request to the queue
        requestQueue.add(stringRequest);
    }

feed.java

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_promotions_feed);

        jsonResponse = new LoginPOJO();

        communityImage = (TextView) findViewById(R.id.communityImage);

        communityImage.setOnClickListener((View.OnClickListener) this);

        searchImage = (TextView) findViewById(R.id.searchImage);

        searchImage.setOnClickListener((View.OnClickListener) this);

        specialsImage = (TextView) findViewById(R.id.searchImage);

        specialsImage.setOnClickListener(this);

        calenderImage = (TextView) findViewById(R.id.calenderImage);

        calenderImage.setOnClickListener(this);

        profileImage = (TextView) findViewById(R.id.profileImage);

        profileImage.setOnClickListener(this);

        TextView response = (TextView) findViewById(R.id.response);

        String data = LoginPOJO.getCode();

        response.setText(data);

    }
private void getPromotionsFeed(final String location) {

        final ProgressDialog progressDialog = new ProgressDialog(PromotionsFeedActivity.this);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        progressDialog.setMessage("Getting promotions feed...");
        progressDialog.setIndeterminate(true);
        progressDialog.setCancelable(false);
        progressDialog.show();
        String UPLOAD_URL = "http://xxxx-dev.elasticbeanstalk.com/api/v1/get_promotions_feed";
        final StringRequest stringRequest = new StringRequest(Request.Method.POST, UPLOAD_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String s) {
                        //Dismissing the progress dialog
                        progressDialog.dismiss();
                        // Getting the final Json Object
                        JSONObject parentObject;
                        try {
                            parentObject = new JSONObject(s);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                        //Showing toast message of the response
                        Log.i("TAG", "onResponse: " + s);

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        //Dismissing the progress dialog
                        progressDialog.dismiss();
                        //Showing snackbar
                        Toast.makeText(PromotionsFeedActivity.this, "Connection Problem", Toast.LENGTH_SHORT).show();
                    }
                }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                //Converting Bitmap to String
                //Creating parameters
                Map<String, String> params = new Hashtable<>();
                params.put("apikey", Utilities.API_KEY);
                params.put("secret", Utilities.SECRET_KEY);
                params.put("location","xxx");
                //Adding parameters
                //returning parameters
                return params;
            }
        };
        //Creating a Request Queue
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        //Adding request to the queue
        requestQueue.add(stringRequest);
    }

LogCat

04-03 18:47:26.263 10750-10750/com.example.reception.farbinder_test I/TAG: onResponse: {"code":200,"status":"ok","message":"Logged in.","data":{"id":"Pg4yYHXIQK","firstName":"Arun","lastName":"","shortName":"Arun","email":"arun@farbinder.com","role":"owner","showInviteMessage":false,"verified":true,"zipCode":"07666","location":"Teaneck, NJ","geo":{"latitude":40.888461,"longitude":-74.012066,"zipcode":"07666","city":"Teaneck","state":"NJ","type":"geo"},"defaultCommunity":{"id":18313,"name":"Teaneck, NJ Community","city":"Teaneck","state":"NJ","latitude":40.888461,"longitude":-74.012066,"type":"community"},"businesses":[{"id":72,"name":"my bus","type":"business"}],"type":"user"},"meta":{"userVideoUrl":"https://d1e6yi6s3cx2ur.cloudfront.net/videos/0/_20160316_ios-user.m4v","businessVideoUrl":"https://d1e6yi6s3cx2ur.cloudfront.net/videos/0/_20160316_ios-business.m4v","promoVideoUrl":"https://d1e6yi6s3cx2ur.cloudfront.net/videos/0/_20160316_ios-user.m4v","searchVideoUrl":"https://d1e6yi6s3cx2ur.cloudfront.net/videos/0/_20160316_ios-user.m4v","faqUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/faq","privacyUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/privacy","termsUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/terms","contactFormUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/contact?u\u003d25fee27e9d18464eadbad0faa632a9b6e82787cc613ca64e","feedbackFormUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/feedback?u\u003d25fee27e9d18464eadbad0faa632a9b6e82787cc613ca64e","type":"links"}}
04-03 18:47:26.265 1518-1877/system_process W/InputMethodManagerService: Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@2ddf4f6b attribute=null, token = android.os.BinderProxy@330c1b98
04-03 18:47:26.326 1518-1660/system_process V/WindowManager: Adding window Window{11f00761 u0 com.example.reception.farbinder_test/com.example.reception.farbinder_test.PromotionsFeedActivity} at 4 of 10 (after Window{27eec5b0 u0 com.example.reception.farbinder_test/com.example.reception.farbinder_test.MainActivity EXITING})
04-03 18:47:26.330 1518-1880/system_process V/WindowManager: Adding window Window{1217747 u0 com.example.reception.farbinder_test/com.example.reception.farbinder_test.PromotionsFeedActivity} at 4 of 11 (before Window{11f00761 u0 com.example.reception.farbinder_test/com.example.reception.farbinder_test.PromotionsFeedActivity})
04-03 18:47:26.441 10750-10750/com.example.reception.farbinder_test E/RecyclerView: No adapter attached; skipping layout
04-03 18:47:26.457 1162-1162/? W/SurfaceFlinger: couldn't log to binary event log: overflow.
04-03 18:47:27.092 10750-10750/com.example.reception.farbinder_test I/TAG: onResponse: {"code":401,"status":"error","message":"User not logged in."}
Arun
  • 25
  • 6

1 Answers1

0

You do your login in a service, and then have the service broadcast the successful login to any interested classes.

Gabe Sechan
  • 90,003
  • 9
  • 87
  • 127
  • So According to you I have to parse successful login to interested classes right. But rest of the endpoint won't take these credentials as parameters. How could I be able to send that successful message to interested class.Could you please explain with some sample code. @Gabe Sechan – Arun Apr 04 '17 at 16:08
  • Look into BroadcastReceivers. Or an event bus. Or an RxJava observable. Or just a bound service with a roll your own callback system. There's dozens of ways to alert activities from a Service, do some research. – Gabe Sechan Apr 04 '17 at 16:10
  • Ohh okay.. Thank you @Gabe Sechan – Arun Apr 04 '17 at 16:11
  • Still I am facing same issue. Actually I am trying to hit login endpoint which gives response.Trying to get profile information which is another endpoint,but still it was showing same error user not loggedIn. Which means the endpoint was looking for login session.@Gabe Sechan – Arun Apr 06 '17 at 15:36