I am creating an app in that app i implemented LinkedIn login with oauth 2.0 so i logged in successfully but how i can i logout from the application.When i click on LinkedIn button to login its automatically login with out any credentials in the app. Please help using the following source code.

public class MainActivity extends Activity {

private static final String API_KEY = "xxxxxxxxxxxx";
private static final String SECRET_KEY = "xxxxxxxxxxx";
private static final String STATE = "xxxxxxxxxxx";
private static final String REDIRECT_URI = "https://com.example.linkedin.oauth/oauth";
private static final String SCOPES = "r_liteprofile%20r_emailaddress";
private static final String AUTHORIZATION_URL = "https://www.linkedin.com/uas/oauth2/authorization";
private static final String ACCESS_TOKEN_URL = "https://www.linkedin.com/uas/oauth2/accessToken";
private static final String SECRET_KEY_PARAM = "client_secret";
private static final String RESPONSE_TYPE_PARAM = "response_type";
private static final String GRANT_TYPE_PARAM = "grant_type";
private static final String GRANT_TYPE = "authorization_code";
private static final String RESPONSE_TYPE_VALUE ="code";
private static final String CLIENT_ID_PARAM = "client_id";
private static final String SCOPE_PARAM = "scope";
private static final String STATE_PARAM = "state";
private static final String REDIRECT_URI_PARAM = "redirect_uri";
private static final String QUESTION_MARK = "?";
private static final String AMPERSAND = "&";
private static final String EQUALS = "=";

private WebView webView;
private ProgressDialog pd;

protected void onCreate(Bundle savedInstanceState) {

    webView = (WebView) findViewById(R.id.main_activity_web_view);
    pd = ProgressDialog.show(this, "", "Loading..",true);

    //Set a custom web view client
    webView.setWebViewClient(new WebViewClient(){
        public void onPageFinished(WebView view, String url) {
            //This method will be executed each time a page finished loading.
            //The only we do is dismiss the progressDialog, in case we are showing any.
            if(pd!=null && pd.isShowing()){
        public boolean shouldOverrideUrlLoading(WebView view, String authorizationUrl) {
            //This method will be called when the Auth proccess redirect to our RedirectUri.
            //We will check the url looking for our RedirectUri.
                Log.i("Authorize", "");
                Uri uri = Uri.parse(authorizationUrl);
                //We take from the url the authorizationToken and the state token. We have to check that the state token returned by the Service is the same we sent.
                //If not, that means the request may be a result of CSRF and must be rejected.
                String stateToken = uri.getQueryParameter(STATE_PARAM);
                if(stateToken==null || !stateToken.equals(STATE)){
                    Log.e("Authorize", "State token doesn't match");
                    return true;

                //If the user doesn't allow authorization to our application, the authorizationToken Will be null.
                String authorizationToken = uri.getQueryParameter(RESPONSE_TYPE_VALUE);
                    Log.i("Authorize", "The user doesn't allow authorization.");
                    return true;
                Log.i("Authorize", "Auth token received: "+authorizationToken);

                //Generate URL for requesting Access Token
                String accessTokenUrl = getAccessTokenUrl(authorizationToken);
                //We make the request in a AsyncTask
                new PostRequestAsyncTask().execute(accessTokenUrl);

                //Default behaviour
                Log.i("Authorize","Redirecting to: "+authorizationUrl);
            return true;

    //Get the authorization Url
    String authUrl = getAuthorizationUrl();
    Log.i("Authorize","Loading Auth Url: "+authUrl);
    //Load the authorization URL into the webView

 * Method that generates the url for get the access token from the Service
 * @return Url
private static String getAccessTokenUrl(String authorizationToken){
    Log.i("accessToken URL",""+URL);
    return URL;
 * Method that generates the url for get the authorization token from the Service
 * @return Url
private static String getAuthorizationUrl(){
    Log.i("authorization URL",""+URL);
    return URL;

private class PostRequestAsyncTask extends AsyncTask<String, Void, Boolean>{

    protected void onPreExecute(){
        pd = ProgressDialog.show(Main2Activity.this, "", "Loading..",true);

    protected Boolean doInBackground(String... urls) {
            String url = urls[0];
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost httpost = new HttpPost(url);
                HttpResponse response = httpClient.execute(httpost);
                    //If status is OK 200
                        String result = EntityUtils.toString(response.getEntity());
                        //Convert the string result to a JSON Object
                        JSONObject resultJson = new JSONObject(result);
                        //Extract data from JSON Response
                        int expiresIn = resultJson.has("expires_in") ? resultJson.getInt("expires_in") : 0;

                        String accessToken = resultJson.has("access_token") ? resultJson.getString("access_token") : null;
                        Log.e("Tokenm", ""+accessToken);
                        if(expiresIn>0 && accessToken!=null){
                            Log.i("Authorize", "This is the access Token: "+accessToken+". It will expires in "+expiresIn+" secs");

                            //Calculate date of expiration
                            Calendar calendar = Calendar.getInstance();
                            calendar.add(Calendar.SECOND, expiresIn);
                            long expireDate = calendar.getTimeInMillis();

                            ////Store both expires in and access token in shared preferences
                            SharedPreferences preferences = Main2Activity.this.getSharedPreferences("user_info", 0);
                            SharedPreferences.Editor editor = preferences.edit();
                            editor.putLong("expires", expireDate);
                            editor.putString("accessToken", accessToken);

                            return true;
            }catch(IOException e){
                Log.e("Authorize","Error Http response "+e.getLocalizedMessage());
            catch (ParseException e) {
                Log.e("Authorize","Error Parsing Http response "+e.getLocalizedMessage());
            } catch (JSONException e) {
                Log.e("Authorize","Error Parsing Http response "+e.getLocalizedMessage());
        return false;

    protected void onPostExecute(Boolean status){
        if(pd!=null && pd.isShowing()){
            //If everything went Ok, change to another activity.
            Intent startProfileActivity = new Intent(Main2Activity.this, Profle.class);



Please help me how can i logout from the app when i logged in with linkedin oauth 2.0.


Related posts

Recent Viewed