Calling Nest REST API on from android app without using Firebase SDK - android

Including Firebase.jar file in my android app project will cause reaching 64k dex limit. So, I'd like to use REST API instead of Firebase API.
After I got access token, I try to use either HttpPut or HttpsURLConnection to change thermostat mode. By using HttpsURLConnection, I got http response code 307 to ask me to redirect to firebase-apiserverN url. Then, I use the new URL and do a HttpsURLConnection PUT, I got http response code 400.
Is there any Nest API sample code for android without Firebase? Thanks.

Related

HTTP 403 Forbidden with android kotlin and retrofit

I'm working on sending data to an API and getting data back from it which is easy enough but how do i add api-key and client-id to my app (I'm using retrofit)? I tested it with Postman and it's working with both of them.
This is fixed by simply adding #Headers("key:value") above the GET/POST api call.
link to more info

Account Manager + Cookie Based Authentication

Is it possible to use Android Account Manager using Cookie-based authentication? How (a code with a explanation would be much appreciated)?
I have seen many examples regarding authentication token, but that is not the case. I have just implemented cookie-based authentication on Python FLASK.
OBS.: I'm using Android Volley for the requests of the application.
All you need to do is to add this line in onCreate in your Application class:
CookieHandler.setDefault(new CookieManager());
this line will make your HttpUrlConnection hold cookies like browser, and since most of the http agents like Volley or okHttp are based on HttpUrlConnection they also will hold your cookies )

Jhipster Jwt Authentication for Mobile API

I have a jHipster project with Jwt Authentication but I can't get it to work outside de webapp. I'm currently developping a Android application and the authentication process get harder than I expected.
Basically I'm sending the parameters of the LoginDTO, to UserJwtController#authorize ('/api/authenticate'). At first I was getting Unauthorized, both on Android or Postman (I'm using it to test the requests).
If I change the '/api' to permitAll, I'm getting 405, Request method 'POST' not supported.
EDIT
It was a wrong typo on Android :/
It works fine for me against /api/authenticate, so either you use wrong URL (e.g. /api/authorize) or your JSON payload is wrong. The only issue you could have is with CORS. You should consider testing with curl as it is easier than PostMan for reporting here what you really do and also the curl options are already built for you in JHipster swagger page.

Send POST request from Android to Symfony backend

I try to send POST requests (like forms) from my Android application to my Symfony backend but when I hit the 'Send' button for example, an Android FileNotFoundException ('http://192.168.1.84/1day-symfony/web/app_dev.php/api/request') is thrown. Maybe it is caused by the rewritten URL.
I do not know how to fix it...
Using Volley fixes the issue of the rewritten URLs.

Android - Basic Authenticated HTTP Request

So basically i need my android app to connect to a web service using a url as such
"http://username:password#0.0.0.0" aka basic authentication.
obviously the username and password are checked by the web app before allowing access and otherwise doesn't allow the request.
my issue is that all the methods i try always say unauthorised (response code 401) regardless of what combination of classes and methods ive used to try and connect to the the url.
The web app in question is designed to return things only is un/pw clears otherwise it returns nothing, the web app and un/pw etc have all be checked and cleared.
so does anyone no the correct way to send a request to a url like that and have it work correctly?
android api8 btw
UPDATE
Turns out my issue is due to the web app using NTLM windows authentication which is not supported directly by androids/apache http library, investigating appropriate workarounds now
Here's some code form a really old project of mine. I used basic auth for some web service, and this worked at the time. I'm not sure if there are updated api's since then (this was Android 1.6), but it should still work.
HttpGet request = new HttpGet();
request.setURI(new URI(url));
UsernamePasswordCredentials credentials =
new UsernamePasswordCredentials(authUser, authPass);
BasicScheme scheme = new BasicScheme();
Header authorizationHeader = scheme.authenticate(credentials, request);
request.addHeader(authorizationHeader);
Basically, Basic HTTP auth is a simple hash of the user and password. The browser allows you to stuff these values in the url, but it actually does the work of adding the basic auth header to your request.

Categories

Resources