sony - Unable to retrieve data using generated accesstoken. everytime got 403 error code -


i able generate access token , store it. unable data using access token. suggest me how set access token in header field. developing application in android. time when request profile endpoint gives me 403 error.

my code setting authorization header follow: con.setrequestproperty("authorization","bearer "+accesstoken); con urlconnection object.

and apart headers need set con object make successful request.

any type of appreciated. in advance.

here tha class getting profile data:

 public class profilerequestactivity extends activity {     myutility utility=new myutility(this);     string urlstring="https://platform.lifelog.sonymobile.com/v1/users/me";      @override     protected void oncreate(bundle savedinstancestate) {         // todo auto-generated method stub         super.oncreate(savedinstancestate);         log.d("profile request", "true");         getprofile();     }     public void getprofile()     {          requestpackage pkg=new requestpackage();         pkg.seturi(urlstring);         pkg.setmethod("get");         httpmanager manager=new httpmanager(pkg);         httpurlconnection con=manager.doconnection();         log.d("access token",utility.readprefernce("access_token") );         con.setrequestproperty("accept-charset" , "utf-8");         con.setrequestproperty("authorization", "bearer "+utility.readprefernce("access_token"));         con.setrequestproperty("accept", "application/json");         //con.setdoinput(true);         //con.setdooutput(true);         con.setrequestproperty("accept-encoding", "gzip");         //con.setrequestproperty("content-encoding", "gzip");         extractprofile task=new extractprofile();         task.execute(con);         }       public class extractprofile extends asynctask<httpurlconnection, void, void>     {                 @override         protected void doinbackground(httpurlconnection... params)          {            int responsecode=0;            //string data="";         try {             responsecode = params[0].getresponsecode();             map<string,list<string>> headermap=params[0].getheaderfields();             log.d("map",headermap.tostring());              log.d("profile response code",""+responsecode);              log.d("header:",params[0].getrequestproperty("authorization"));             //data=params[0].getresponsemessage();              bufferedreader reader;             if (responsecode == httpurlconnection.http_ok)             reader = new bufferedreader(new inputstreamreader(params[0].getinputstream()));             else             reader = new bufferedreader(new inputstreamreader((params[0].geterrorstream())));                string line;             stringbuilder data=new stringbuilder();             while((line=reader.readline())!=null)             {                 data.append(line);             }             log.d("data",data.tostring());           } catch (ioexception e) {             // todo auto-generated catch block             e.printstacktrace();         }            // log.d("data",data);             return null;         }     }    }       here helper class:      public class requestpackage {          string uri="";         string method="get";         map<string,string> params=new hashmap<string, string>();         public string geturi() {             return uri;         }         public void seturi(string uri) {             this.uri = uri;         }         public string getmethod() {             return method;         }         public void setmethod(string method) {             this.method = method;         }         public map<string, string> getparams() {             return params;         }         public void setparams(map<string, string> params) {             this.params = params;         }         public void setparam(string key,string value)         {             params.put(key, value);         }          public string getencodedparams()         {             stringbuilder sb=new stringbuilder();             for(string key:params.keyset())             {                 string value=null;                 try {                     value = urlencoder.encode(params.get(key),"utf-8");                 } catch (unsupportedencodingexception e) {                     // todo auto-generated catch block                     e.printstacktrace();                 }                 params.put(key, value);                 if(sb.length()>0)                 {                     sb.append("&");                     //sb.append(key+"=");                 }                 sb.append(key+"="+value);             }              return sb.tostring();         }     }       public class httpmanager {         requestpackage pkg;          public httpmanager(requestpackage p)         {             pkg=p;         }          public httpurlconnection doconnection()         {             url url;             httpurlconnection con=null;             bufferedreader reader;             string uri=pkg.geturi();             log.d("uri",uri);             try {                 if(pkg.getmethod().equals("get"))                 {                     if(pkg.getparams().size()!=0)                     uri+="?"+pkg.getencodedparams();                 }                    log.d("request package uri",uri);                 url = new url(uri);                          con=(httpurlconnection) url.openconnection();                 con.setrequestmethod(pkg.getmethod());                 //con.setrequestproperty("content-type", "application/x-www-form-urlencoded");                 if(pkg.getmethod().equals("post"))                 {                     con.setdooutput(true);                     con.setdoinput(true);                     outputstreamwriter writer=new outputstreamwriter(con.getoutputstream());                 //  log.d("encoded parameter",uri+"  "+pkg.getencodedparams());                     writer.write(pkg.getencodedparams());                     writer.flush();                 }             } catch (exception e) {                 // todo auto-generated catch block                 e.printstacktrace();             }             log.d("out con",con.tostring());             return con;              }          static public string readdata(httpurlconnection con)         {     //      log.d("in con",con.tostring());     //          string token = con.getheaderfields();     //          return token;               try {                 //log.d("connection",con.tostring());                 //log.d("response",""+con.getresponsecode());                 bufferedreader reader = new bufferedreader(new inputstreamreader(con.getinputstream()));                 stringbuilder sb=new stringbuilder();                 string line;                 while((line=reader.readline())!=null)                 {                     sb.append(line);                 }                 return sb.tostring();             } catch (ioexception e) {                 // todo auto-generated catch block                 e.printstacktrace();                 return null;             }           }      } 

ok took time through code today. seems have key things missing oauth.

  1. you need popup dialog when communicating platform.lifelog.sonymobile.com/oauth/2/authorize. give user chance agree authorization. looks call url take response , move on. need "code" server first
  2. before can start receiving data have take "code" above , send client id , secret platform.lifelog.sonymobile.com/oauth/2/token token. once token can start querying data.

it may easier if use oauth library takes care of hard work. here 1 found online, sure there others: https://github.com/wuman/android-oauth-client


Comments

Popular posts from this blog

PHP DOM loadHTML() method unusual warning -

python - How to create jsonb index using GIN on SQLAlchemy? -

c# - TransactionScope not rolling back although no complete() is called -