From e028058e6fa1cc905893683e64c5d8628e0b898a Mon Sep 17 00:00:00 2001 From: Paul Bird Date: Thu, 31 Aug 2017 09:18:54 +0100 Subject: [PATCH] Added refresh access token --- .idea/misc.xml | 2 +- .idea/vcs.xml | 6 ++ .../operateapiexample/Authenticate.java | 58 ++++++++++++++++++- .../operateapiexample/MainActivity.java | 29 +++++++++- .../operateapiexample/SharedPrefs.java | 3 + app/src/main/res/layout/content_main.xml | 30 ++++++---- 6 files changed, 110 insertions(+), 18 deletions(-) create mode 100644 .idea/vcs.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index fbb6828..5d19981 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -37,7 +37,7 @@ - + diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/java/tech/essensys/operateapiexample/Authenticate.java b/app/src/main/java/tech/essensys/operateapiexample/Authenticate.java index 0b4c030..faa92be 100644 --- a/app/src/main/java/tech/essensys/operateapiexample/Authenticate.java +++ b/app/src/main/java/tech/essensys/operateapiexample/Authenticate.java @@ -23,7 +23,6 @@ import okhttp3.Response; public class Authenticate { private String oauth2URL = "https://api.occupie.com/oauth2/token"; - private String clientSecret = ""; private SharedPrefs sharedPrefs; public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); @@ -33,10 +32,10 @@ public class Authenticate { sharedPrefs = new SharedPrefs(context); } - public void login(String username, String password) { + public void login(String clientId, String clientSecret, String username, String password) { String postBody = "grant_type=password" - + "&client_id=trustedclient" + + "&client_id=" + clientId + "&client_secret=" + clientSecret + "&scope=hubapi" + "&username=" + username + "&password=" + password; @@ -48,8 +47,23 @@ public class Authenticate { } catch (IOException e) { e.printStackTrace(); } + } + + public void refreshAccessToken(String clientId, String clientSecret, String refreshToken) { + + String postBody = "grant_type=refresh_token" + + "&client_id=" + clientId + + "&client_secret=" + clientSecret + + "&scope=hubapi" + + "&refresh_token=" + refreshToken; + Log.d("postBody", postBody); + try { + postRequest(oauth2URL, postBody); + } catch (IOException e) { + e.printStackTrace(); + } } @@ -89,6 +103,44 @@ public class Authenticate { }); } + /* + void refreshAccessTokenPostRequest(String postUrl, String postBody) throws IOException { + + OkHttpClient client = new OkHttpClient(); + + RequestBody body = RequestBody.create(FORM_ENCODED, postBody); + + Request request = new Request.Builder() + .url(postUrl) + .post(body) + .build(); + + client.newCall(request).enqueue(new Callback() { + @Override + public void onFailure(Call call, IOException e) { + call.cancel(); + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + + final String theResponse = response.body().string(); + + Log.d("theResponse",theResponse); + + try { + JSONObject json = new JSONObject(theResponse); + final String accesstoken = json.getString("access_token"); + final String refreshtoken = json.getString("refresh_token"); + saveTheTokens(accesstoken, refreshtoken); + } catch (JSONException e) { + e.printStackTrace(); + } + } + }); + } + */ + void saveTheTokens(String accessToken, String refreshToken) { sharedPrefs.setAccessToken(accessToken); sharedPrefs.setRefreshToken(refreshToken); diff --git a/app/src/main/java/tech/essensys/operateapiexample/MainActivity.java b/app/src/main/java/tech/essensys/operateapiexample/MainActivity.java index bc0b51c..add2de2 100644 --- a/app/src/main/java/tech/essensys/operateapiexample/MainActivity.java +++ b/app/src/main/java/tech/essensys/operateapiexample/MainActivity.java @@ -14,6 +14,15 @@ import android.widget.Button; public class MainActivity extends AppCompatActivity { + // + // Need to provide credentials below + // + + private String clientId = ""; + private String clientSecret = ""; + private String userId = ""; + private String userPassword = ""; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -30,13 +39,20 @@ public class MainActivity extends AppCompatActivity { } }); - final Button button = (Button) findViewById(R.id.loginButton); - button.setOnClickListener(new View.OnClickListener() { + final Button loginButton = (Button) findViewById(R.id.loginButton); + loginButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { login(); } }); + final Button refreshAccessTokenButton = (Button) findViewById(R.id.refreshAccessTokenButton); + refreshAccessTokenButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + refreshAccessToken(); + } + }); + final Button getArea1 = (Button) findViewById(R.id.getArea1); getArea1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { @@ -87,7 +103,14 @@ public class MainActivity extends AppCompatActivity { private void login() { Authenticate authenticate = new Authenticate(this); - authenticate.login("user@domain.com", "yourpassword"); + authenticate.login(clientId, clientSecret, userId, userPassword); + } + + private void refreshAccessToken() { + SharedPrefs sharedPrefs = new SharedPrefs(this); + String refreshToken = sharedPrefs.getRefreshToken(); + Authenticate authenticate = new Authenticate(this); + authenticate.refreshAccessToken(clientId,clientSecret, refreshToken); } private void getArea() { diff --git a/app/src/main/java/tech/essensys/operateapiexample/SharedPrefs.java b/app/src/main/java/tech/essensys/operateapiexample/SharedPrefs.java index 31dfea6..38e221c 100644 --- a/app/src/main/java/tech/essensys/operateapiexample/SharedPrefs.java +++ b/app/src/main/java/tech/essensys/operateapiexample/SharedPrefs.java @@ -34,4 +34,7 @@ public class SharedPrefs extends Activity { public String getAccessToken() { return preferences.getString("accessToken",""); } + public String getRefreshToken() { + return preferences.getString("refreshToken",""); + } } diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index 5d34431..727839c 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -14,33 +14,43 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Get Access Token" - app:layout_constraintBottom_toTopOf="parent" + android:layout_marginTop="10dp" + android:layout_marginBottom="10dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"/> +