java - how to solve this 403 io exception? -


i want give whole google drive access application users. , use following code authorize google , oauth2.0.

function opengooglelogin()               {                        var url = "https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/drive&redirect_uri=http://localhost:8080/abc/oauth2callback&response_type=code&client_id=xxxxxxxxxxxxxxxxxxxxxxxxxx&access_type=offline&approval_prompt=force";                     window.location = url;              } 

from above code got authorization code. on redirected page put following servlet code

public class oauth2callback extends httpservlet {     private static final long serialversionuid = 1l;      public oauth2callback() {         super();      }      /**      * @see httpservlet#doget(httpservletrequest request, httpservletresponse      *      response)      */     protected void doget(httpservletrequest request,             httpservletresponse response) throws servletexception, ioexception {          system.out.println("entering doget");         try {             // code             string code = request.getparameter("code");             // format parameters post             string urlparameters = "code="                     + code                     + "&client_id=xxxxxxxxxxxxxxxxxxxxx"                     + "&client_secret=xxxxxxxxxxxxxxxxxx"                     + "&redirect_uri=http://localhost:8080/abc/oauth2callback"                     + "&grant_type=authorization_code";              //post parameters             url url = new url("https://accounts.google.com/o/oauth2/token");             urlconnection urlconn = url.openconnection();             urlconn.setdooutput(true);             outputstreamwriter writer = new outputstreamwriter(                     urlconn.getoutputstream());             writer.write(urlparameters);             writer.flush();              //get output in outputstring              string line, outputstring = "";             bufferedreader reader = new bufferedreader(new inputstreamreader(                     urlconn.getinputstream()));             while ((line = reader.readline()) != null) {                 outputstring += line;             }             system.out.println(outputstring);              //get access token              jsonobject json = (jsonobject)new jsonparser().parse(outputstring);             string access_token = json.get("access_token").getasstring();             system.out.println(access_token);              //get user info              url = new url(                     "https://www.googleapis.com/oauth2/v1/userinfo?access_token="                             + access_token);             urlconn = url.openconnection();             outputstring = "";             reader = new bufferedreader(new inputstreamreader(                     urlconn.getinputstream()));             while ((line = reader.readline()) != null) {                 outputstring += line;             }             system.out.println(outputstring);              // convert json response pojo class             googlepojo data = new gson().fromjson(outputstring, googlepojo.class);             system.out.println(data);             writer.close();             reader.close();          } catch (malformedurlexception e) {             system.out.println( e);         } catch (protocolexception e) {             system.out.println( e);         } catch (ioexception e) {             system.out.println( e);         }         system.out.println("leaving doget");     }  } 

in above code , google pojo pojo class, don't know when run servlet, give me access , refrshtoken.. gives me error

java.io.ioexception: server returned http response code: 403 url: https://www.googleapis.com/oauth2/v1/userinfo?access_token=xxxxxxxxxxxxx.

you making initial authorization request scope https://www.googleapis.com/auth/drive, , using it's code call https://www.googleapis.com/oauth2/v1/userinfo.

if want user profile information, have use 1 of these scopes in initial request,

  1. https://www.googleapis.com/auth/userinfo.email : view email address
  2. https://www.googleapis.com/auth/userinfo.profile : view basic profile info

so, change first url to

var url = "https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/userinfo.profile&redirect_uri=http://localhost:8080/abc/oauth2callback&response_type=code&client_id=xxxxxxxxxxxxxxxxxxxxxxxxxx&access_type=offline&approval_prompt=force"; 

Comments

Popular posts from this blog

authentication - Mongodb revoke acccess to connect test database -

r - Update two sets of radiobuttons reactively - shiny -

ios - Realm over CoreData should I use NSFetchedResultController or a Dictionary? -