Как выйти из LinkedIn, используя authrequest с помощью Android? - PullRequest
5 голосов
/ 29 апреля 2011

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

Спасибо за объявление.

Ответы [ 2 ]

9 голосов
/ 14 октября 2011

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

Недопустимый токен

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

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

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

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

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

Итак. В заключение: на момент написания этой статьи Linked In не оказывает поддержку сторонним приложениям

0 голосов
/ 14 октября 2011

Читая ваш вопрос, я также пытался найти решение, а также говорил с Мистер. Набиль Сиддики - автор 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 && 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

        }
    }

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

потому что я также загрузил и увидел SourceCode для API linkedin-j и в 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);
        }
    }
...