как выйти из LinkedIn, используя authrequest, используя Android?

#android #oauth #integration #linkedin

#Android #oauth #интеграция #LinkedIn

Вопрос:

я разработал одно приложение, интегрированное с LinkedIn ..! я выполняю аутентификацию в LinkedIn с помощью службы OAuth для публикации обновления сети .. но теперь, как автоматически выйти (отменить аутентификацию) из LinkedIn?

Большое спасибо..

Комментарии:

1. Я обнаружил, что одна функция для выхода из системы «invalidateAccessToken(client.getAccessToken());» но она не работает…

2. я попытался со следующим URL linkedin.com/secure / … но это не сработало.

3. я также пробовал с <a rel="nofollow noreferrer noopener" href="https://api.linkedin.com/uas/oauth/logout?oauth_token= api.linkedin.com/uas/oauth/logout ? oauth_token=<значение токена > но это не может

Ответ №1:

Согласно официальному блогу

Недействительность токена

Теперь вы можете аннулировать токен OAuth для своего приложения. Просто отправьте запрос GET, подписанный OAuth, на:

https://api.linkedin.com/uas/oauth/invalidateToken

Ответ 200 указывает на то, что токен был успешно признан недействительным.

Однако согласно этому :

Сторонние приложения не имеют никакого способа вывести пользователя из LinkedIn — это контролируется веб-сайтом. Аннулирование токена заставляет пользователя повторно авторизоваться при следующей попытке использования приложения, но после входа в LinkedIn его браузер останется авторизованным до тех пор, пока он не выйдет из системы через веб-сайт.

Итак, в заключение: на момент написания статьи Linkedin не предоставляет эту поддержку сторонним приложениям

Комментарии:

1. я полностью удовлетворен ответом.

Ответ №2:

Читая ваш вопрос, я также пытался найти решение, а также поговорил с мистером Набилом Сиддики — автором linkedin-j API

и это был его ответ, когда я спросил, возможно ли выйти с помощью linkedin-j api?

Привет, может быть, есть метод LinkedInOAuthService#invalidateAccessToken, который должен аннулировать ваш токен доступа. Сообщество мало использует его, поэтому я не уверен, работает ли он так, как ожидалось, или нет. Попробуйте и дайте мне знать, если возникнут проблемы. С уважением Набиль Мухтар

итак, в своей деятельности я попробовал использовать этот способ.

     final LinkedInOAuthService oAuthService = LinkedInOAuthServiceFactory.getInstance().createLinkedInOAuthService(consumerKey, consumerSecret);
    final LinkedInApiClientFactory factory = LinkedInApiClientFactory.newInstance(consumerKey, consumerSecret);
    LinkedInRequestToken liToken;
    LinkedInApiClient client;
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        liToken = oAuthService.getOAuthRequestToken(CALLBACKURL);
        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(liToken.getAuthorizationUrl()));
        startActivity(i);
    }
    @Override
    protected void onNewIntent(Intent intent) 
    {
        super.onNewIntent(intent);
        Uri uri = intent.getData();

        if (uri != null amp;amp; uri.toString().startsWith(CALLBACKURL)) 
        {
            String verifier = intent.getData().getQueryParameter("oauth_verifier");

            LinkedInAccessToken accessToken = oAuthService.getOAuthAccessToken(liToken, verifier);
            client = factory.createLinkedInApiClient(accessToken);
            Connections con = client.getConnectionsForCurrentUser();

            //AFTER FETCHING THE DATA I HAVE DONE

             oAuthService.invalidateAccessToken(accessToken);
           //this is for sign out

        }
    }
  

Пожалуйста, попробуйте этот способ один раз и скажите мне, решает ли это вашу проблему.

потому что я также загрузил и увидел исходный код для linkedin-j API и в LinkedInOAuthServiceImpl.java

они предоставили функцию, и эта функция также работает, если мы напишем тот же код в наш файл. это,

 @Override
    public void invalidateAccessToken(LinkedInAccessToken accessToken) {
        if (accessToken == null) {
            throw new IllegalArgumentException("access token cannot be null.");
        }
        try {
            URL               url     = new URL(LinkedInApiUrls.LINKED_IN_OAUTH_INVALIDATE_TOKEN_URL);
            HttpURLConnection request = (HttpURLConnection) url.openConnection();

            final OAuthConsumer consumer = getOAuthConsumer();
            consumer.setTokenWithSecret(accessToken.getToken(), accessToken.getTokenSecret());
            consumer.sign(request);
            request.connect();

            if (request.getResponseCode() != HttpURLConnection.HTTP_OK) {
                throw new LinkedInOAuthServiceException(convertStreamToString(request.getErrorStream()));
            }
        } catch (Exception e) {
            throw new LinkedInOAuthServiceException(e);
        }
    }
  

Комментарии:

1. нет ..!! это не работает с методом invalidateAccessToken () .. пользователь остается в системе после его применения..

2. хорошо .. на самом деле у меня не было достаточно времени, чтобы протестировать это .. проделаю еще немного работы и дам вам знать, если у меня получится.