0

We have Laravel + passport in our localhost (xampp). we want send request from android app to laravel app but below method have no response and no error and btnSubmit text be empty after sending request and we don't receive any access token. where is the problem of this method?

private void createUser(){
    final String url = "http://192.168.1.3/me2we/public/oauth/token";
    StringRequest stringRequest = new StringRequest(
            Request.Method.POST, url
            , new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    btnSubmit.setText(response);
                }
            }, new Response.ErrorListener(){
                @Override
                public void onErrorResponse(VolleyError error) {
                    btnSubmit.setText(error.getMessage());
                }
            }
        ){
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String,String> params = new HashMap<String, String>();
            params.put("grant_type","password");
            params.put("client_id","2");
            params.put("client_secret","MKCFtd1U7pJ3J85iSu380SyGIVltWlYdrL334pbF");
            params.put("username","aminshabanzadeh1@gmail.com");
            params.put("password","A1b2C");
            params.put("scope","");
            return params;
        }
    };
    AppController.getInstance().addToRequestQueue(stringRequest);
}

did we select the correct ip address in request url? below is ipconfig command output in CMD:

Windows IP Configuration


Ethernet adapter Ethernet 3:

   Connection-specific DNS Suffix  . : test.com
   Link-local IPv6 Address . . . . . : fe80::7d4b:27f7:1e6d:f341%20
   IPv4 Address. . . . . . . . . . . : 10.253.31.78
   Subnet Mask . . . . . . . . . . . : 255.255.248.0
   Default Gateway . . . . . . . . . :

Ethernet adapter Ethernet 2:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Wireless LAN adapter Wi-Fi:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Wireless LAN adapter Local Area Connection* 2:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Wireless LAN adapter Local Area Connection* 13:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::8852:3d75:59b3:a871%9
   IPv4 Address. . . . . . . . . . . : 192.168.1.3
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.1.1

Ethernet adapter VMware Network Adapter VMnet1:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::41f9:ce63:37a2:134%10
   IPv4 Address. . . . . . . . . . . : 192.168.229.1
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

Ethernet adapter VMware Network Adapter VMnet8:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::11b1:57cb:b413:26de%4
   IPv4 Address. . . . . . . . . . . : 192.168.230.1
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

Ethernet adapter Bluetooth Network Connection:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

laravel verfy token class:

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    /**
     * Indicates whether the XSRF-TOKEN cookie should be set on the response.
     *
     * @var bool
     */
    protected $addHttpCookie = true;

    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        //
    ];
}
Amin Shabanzadeh
  • 301
  • 2
  • 11

2 Answers2

0

In Laravel, with POST method, you need to verify Csrf Token for security. The easy way i knew is to ignore this check security.

You may try: add your name method to the file in Laravel: Controllers/Middleware/VerifyCsrfToken.php

if you know how to accept the verify and check it on Android Studio, please let me know VerifyCsrfToken class in Laravel

SYLUAN
  • 1
  • 1
0

I'm assuming you're trying to access it from an emulator, in which case, your machine's IP address is not accessible to the emulator. To access your localhost from an emulator you have to use "10.0.2.2".

Check here for reference

Another reference

Dean
  • 106
  • 1
  • 11
  • we are not using emulator. we are using real device for test our application – Amin Shabanzadeh Nov 18 '18 at 21:19
  • If that is the case then you have a look at this link and see if the solution works for you https://stackoverflow.com/questions/4779963/how-can-i-access-my-localhost-from-my-android-device If that doesn't work, you can also check out the answers in this thread https://stackoverflow.com/questions/9887621/accessing-localhost-of-pc-from-usb-connected-android-mobile-device – Dean Nov 18 '18 at 21:27
  • thanks. we had some tests. ip is correct. we don't know how create new user now. – Amin Shabanzadeh Nov 18 '18 at 23:19
  • I've noticed in your snippet that you are not sending the context that the code is supposed to execute in, perhaps that is why it's not working. Try passing the context like so "AppController.getInstance(this).addToRequestQueue(jsonObjectRequest);" and see if it will work, where this refers to the current context of execution. – Dean Nov 19 '18 at 00:54