android


Get Lifelog API result


I'm trying to use the Lifelog's API and i wrote this portion of code:
.
.
.
//MAIN ACTIVITY
private void scaricaDati(){
token = spref.getString("access_token");
Log.i(TAG, "(scaricaDati) token = " + token);
String tag_json_obj = "json_obj_req";
String url = "https://platform.lifelog.sonymobile.com/v1/users/me/activities";
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
url, null,
new Response.Listener<JSONObject>() {
#Override
public void onResponse(JSONObject response) {
Log.i("MainActivity response ", response.toString());
try {
Log.i(TAG,"Ottieni Dati");
JSONArray result=response.getJSONArray("result");
Log.i("MainActivity result",result.toString());
for (int i = 0; i < result.length(); i++) {
JSONObject jsonobject = result.getJSONObject(i);
String startTime = jsonobject.getString("startTime");
Log.i("MainActivity start time",startTime.toString());
String endTime = jsonobject.getString("endTime");
Log.i("MainActivity end time",endTime.toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("MainActivity ", "Error: " + error.getMessage());
}
}) {
#Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("start_time", "2016-04-07T17:00:00.000Z");
params.put("end_time", "2016-04-07T18:00:00.000Z");
params.put("type", "physical:walk");
return params;
}
#Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "Bearer "+ token);
headers.put("Accept", "application/json");
//headers.put("Accept-Encoding", "gzip");
//headers.put("Content-Encoding", "gzip");
return headers;
}
};
// Adding request to request queue
ApplicationController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);
}
.
.
.
//LIFELOG CLASS WITH THE "DOLOGIN" METHOD
public static final int LOGINACTIVITY_REQUEST_CODE = 2231;
public static final String API_BASE_URL = "https://platform.lifelog.sonymobile.com";
public static final String LIFELOG_PREFS = "lifelog_prefs";
static String client_id = "";
static String client_secret = "";
static String login_scope = "";
static String callback_url = "";
static String auth_token = "";
public static String getClient_id() {
return client_id;
}
public static String getClient_secret() {
return client_secret;
}
public static String getCallback_url() {
return callback_url;
}
public static String getAuth_token() {
return auth_token;
}
public static void initialise(String id, String secret, String callbackUrl) {
client_id = id;
client_secret = secret;
callback_url = callbackUrl;
setScope(Scopes.PROFILE_READ, Scopes.ACTIVITIES_READ, Scopes.LOCATIONS_READ);
}
public static String getScope() {
return login_scope;
}
public static void setScope(String... scopes) {
login_scope = "";
for (String scope : scopes) {
if (TextUtils.isEmpty(login_scope)) {
login_scope = scope;
} else {
login_scope += "+" + scope;
}
}
}
public static void doLogin(Activity activity) {
Intent loginIntent = new Intent(activity, LoginActivity.class);
activity.startActivityForResult(loginIntent, LOGINACTIVITY_REQUEST_CODE);
}
public static void checkAuthentication (Context context, final OnAuthenticationChecked oac) {
SecurePreferences securePreferences = new SecurePreferences(
context,
LIFELOG_PREFS,
getClient_secret(),
true
);
if (securePreferences.containsKey(GetAuthTokenTask.AUTH_ACCESS_TOKEN)) {
auth_token = securePreferences.getString(GetAuthTokenTask.AUTH_ACCESS_TOKEN);
long expires_in = Long.valueOf(securePreferences.getString(GetAuthTokenTask.AUTH_EXPIRES_IN));
if (expires_in > 120) {
oac.onAuthChecked(true);
} else {
RefreshAuthTokenTask ratt = new RefreshAuthTokenTask(context);
ratt.refreshAuth(new RefreshAuthTokenTask.OnAuthenticatedListener() {
#Override
public void onAuthenticated(String token) {
auth_token = token;
oac.onAuthChecked(true);
}
});
}
}
oac.onAuthChecked(false);
}
public interface OnAuthenticationChecked {
void onAuthChecked(boolean authenticated);
}
public static class Scopes {
public static final String PROFILE_READ = "lifelog.profile.read";
public static final String ACTIVITIES_READ = "lifelog.activities.read";
public static final String LOCATIONS_READ = "lifelog.locations.read";
}
.
.
.
//GetAuthTokenTask class
private static final String TAG = "LifeLog:GetAuthToken";
private static final String OAUTH2_URL = "https://platform.lifelog.sonymobile.com/oauth/2/token";
public static final String AUTH_ACCESS_TOKEN = "access_token";
public static final String AUTH_EXPIRES_IN = "expires_in";
public static final String AUTH_REFRESH_TOKEN = "refresh_token";
public static final String AUTH_TOKEN_TYPE = "token_type";
public static final String AUTH_REFRESH_TOKEN_EXPIRES_IN = "refresh_token_expires_in";
private final static String PARAM_CLIENT_ID = "client_id";
private final static String PARAM_CLIENT_SECRET = "client_secret";
private final static String PARAM_GRANT_TYPE = "grant_type";
private final static String PARAM_CODE = "code";
private final Context mContext;
private OnAuthenticatedListener onAuthenticatedListener;
public GetAuthTokenTask(Context context) {
this.mContext = context;
}
public void getAuth(final String authCode, OnAuthenticatedListener oal) {
onAuthenticatedListener = oal;
final String authRequestBody =
PARAM_CLIENT_ID + "=" + LifeLog.getClient_id() + "&"
+ PARAM_CLIENT_SECRET + "=" + LifeLog.getClient_secret() + "&"
+ PARAM_GRANT_TYPE + "=" + "authorization_code" + "&"
+ PARAM_CODE + "=" + authCode;
JsonObjectRequest authRequest = new JsonObjectRequest(Request.Method.POST,
OAUTH2_URL,
(JSONObject)null,
new Response.Listener<JSONObject>() {
#Override
public void onResponse(JSONObject jObj) {
try {
SecurePreferences spref = new SecurePreferences(mContext,
LifeLog.LIFELOG_PREFS, LifeLog.getClient_secret(), true);
spref.put(AUTH_ACCESS_TOKEN, jObj.getString(AUTH_ACCESS_TOKEN));
spref.put(AUTH_EXPIRES_IN, jObj.getString(AUTH_EXPIRES_IN));
spref.put(AUTH_TOKEN_TYPE, jObj.getString(AUTH_TOKEN_TYPE));
spref.put(AUTH_REFRESH_TOKEN, jObj.getString(AUTH_REFRESH_TOKEN));
spref.put(AUTH_REFRESH_TOKEN_EXPIRES_IN,
jObj.getString(AUTH_REFRESH_TOKEN_EXPIRES_IN));
if (Debug.isDebuggable(mContext)) {
Log.d("TOKEN", jObj.getString(AUTH_ACCESS_TOKEN));
Log.d("REFRESH TOKEN", jObj.getString(AUTH_REFRESH_TOKEN));
}
if (onAuthenticatedListener != null) {
onAuthenticatedListener.onAuthenticated(jObj.getString(AUTH_ACCESS_TOKEN));
}
} catch (JSONException e) {
if (onAuthenticatedListener != null) {
onAuthenticatedListener.onError(e);
}
}
}
},
new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError volleyError) {
if (onAuthenticatedListener != null) {
onAuthenticatedListener.onError(volleyError);
}
}
}
) {
#Override
public String getBodyContentType() {
return String.format("application/x-www-form-urlencoded; charset=%s", new Object[]{"utf-8"});
}
#Override
public byte[] getBody() {
return authRequestBody.getBytes(Charset.forName("utf-8"));
}
};
VolleySingleton.getInstance(mContext).addToRequestQueue(authRequest);
}
public interface OnAuthenticatedListener {
void onAuthenticated(String authToken);
void onError(Exception e);
}
.
.
.
//RefreshAuthTokenTask class
public static final String TAG = "LifeLog:RefreshAuth";
public static final String OAUTH2_URL = "https://platform.lifelog.sonymobile.com/oauth/2/refresh_token";
public static final String AUTH_ACCESS_TOKEN = "access_token";
public static final String AUTH_ISSUED_AT = "issued_at";
public static final String AUTH_EXPIRES_IN = "expires_in";
public static final String AUTH_EXPIRES = "expires";
public static final String AUTH_REFRESH_TOKEN = "refresh_token";
static String PARAM_CLIENT_ID = "client_id";
static String PARAM_CLIENT_SECRET = "client_secret";
static String PARAM_GRANT_TYPE = "grant_type";
static String PARAM_REFRESH_TOKEN = "refresh_token";
private Context mContext;
private OnAuthenticatedListener onAuthenticatedListener;
public RefreshAuthTokenTask(Context context) {
this.mContext = context;
}
public void refreshAuth(OnAuthenticatedListener oal) {
onAuthenticatedListener = oal;
final SecurePreferences spref = new SecurePreferences(mContext,
LifeLog.LIFELOG_PREFS, LifeLog.getClient_secret(), true);
final String refreshAuthBody =
PARAM_CLIENT_ID + "=" + LifeLog.getClient_id() + "&"
+ PARAM_CLIENT_SECRET + "=" + LifeLog.getClient_secret() + "&"
+ PARAM_GRANT_TYPE + "=" + "refresh_token" + "&"
+ PARAM_REFRESH_TOKEN + "=" + spref.getString(AUTH_REFRESH_TOKEN);
Log.d(TAG, refreshAuthBody);
JsonObjectRequest authRequest = new JsonObjectRequest(Request.Method.POST,
OAUTH2_URL,
null,
new Response.Listener<JSONObject>() {
#Override
public void onResponse(JSONObject jObj) {
try {
spref.put(AUTH_ACCESS_TOKEN, jObj.getString(AUTH_ACCESS_TOKEN));
spref.put(AUTH_EXPIRES_IN, jObj.getString(AUTH_EXPIRES_IN));
spref.put(AUTH_EXPIRES, jObj.getString(AUTH_EXPIRES));
spref.put(AUTH_ISSUED_AT, jObj.getString(AUTH_ISSUED_AT));
spref.put(AUTH_REFRESH_TOKEN, jObj.getString(AUTH_REFRESH_TOKEN));
Log.d("NEW TOKEN", jObj.getString(AUTH_ACCESS_TOKEN));
Log.d("NEW EXPIRATION", jObj.getString(AUTH_EXPIRES));
Log.d("NEW REFRESH TOKEN", jObj.getString(AUTH_REFRESH_TOKEN));
if (onAuthenticatedListener != null) {
onAuthenticatedListener.onAuthenticated(jObj.getString(AUTH_ACCESS_TOKEN));
}
} catch (JSONException e) {
//TODO: handle malformed json
}
}
},
new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError volleyError) {
}
}
) {
#Override
public String getBodyContentType() {
return String.format("application/x-www-form-urlencoded; charset=%s", new Object[]{"utf-8"});
}
#Override
public byte[] getBody() {
return refreshAuthBody.getBytes(Charset.forName("utf-8"));
}
};
VolleySingleton.getInstance(mContext).addToRequestQueue(authRequest);
}
public interface OnAuthenticatedListener {
void onAuthenticated(String auth_token);
}
in the onResponse i receive a lot of data, also for days and hours different from the day and the interval of time setted in the getParams, why? where is the error? If i remove the getParams method i obtain the same data as results.
I believe the answer may be that you are using JSONObjectRequest instead of StringRequest. JsonObjectRequest overrides the getBody() method so your getParam() method never runs. You can read more about this here.
Android: Volley HTTP Request custom header
Trying using StringRequest to see if that works.

Related Links

Android NDK CMake linking issues
ionic app does not render svg files in android but does for ios
How to create a Sugar ORM database when app first installed?
Get IP and name of devices on WIFI
Detect Android Back button press in android.view.View
Why does the preview image not show in Android when using Cordova Camera?
Android drawable - change specific colors
Using GoogleAPIClient in Background Services
Error when playing video via streaming
Error when attempting to use the data binding provided context variable with BaseObservable
How to draw a line on top of another one in Canvas?
Request permission dialog blackout the activity and pressing any key is closing the activity
Android findviewbyid in DatePickerDialog
Intermittent sound-related hard crash in Android HaxeFlixel game
LibGDX silently fails loading many textures
How to set sound for Firebase notification when app is in the background?

Categories

HOME
delphi-7
fpga
github-for-windows
pda
character-encoding
jmx
battery
x264
mvc5
vert.x
mod-security
filechannel
automatic-ref-counting
powershell-v5.0
vuejs
smartclient
boost-icl
simpleitk
guzzle
ksh
event-store
tosca
beta
data.stackexchange.com
definitelytyped
fable-f#
licensing
outliers
entity-relationship-model
bringtofront
bioinformatics
testcomplete
finagle
eviews
xbox
dst
kodi
hunspell
installscript
connection-pool
setup.py
trigonometry
apriori
dcmtk
bindingnavigator
berkeley-db-je
double-click
twilio-click-to-call
tinkerpop
appdomain
excel-dna
jqchart
check-mk
quicktime
bbpress
janus
swingworker
android-instrumentation
autosar
flex-monkey
builtins
xcode-server
simevents
respondcms
jtwig
deep
phpwebsocket
findfirst
blitline
spring-retry
vhosts
tfs-workitem
fiware-monitoring
liquid-layout
actionfilterattribute
cocos3d
appserver
nsmenu
template-deduction
kissfft
wxformbuilder
alternate
renderer
menubar
isqlquery
mongohq
observium
panda3d
sentestingkit
boost-msm
garbage
inkcanvas
oracle-enterprise-linux
ikimagebrowserview
winmain
pylucene
cloudfiles
qglwidget
skype4java
wcf-instancing
unmanagedresources
ifilter

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App