io.jsonwebtoken.security.SecurityException#com.linecorp.linesdk.LineApiResponse源码实例Demo

下面列出了io.jsonwebtoken.security.SecurityException#com.linecorp.linesdk.LineApiResponse 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: line-sdk-android   文件: InternalApisFragment.java
@OnClick(R.id.revoke_access_token_btn)
void revokeToken() {
    startApiAsyncTask("revokeAccessToken", () -> {
        LineApiResponse<LineAccessToken> currentAccessTokenResponse = lineApiClient.getCurrentAccessToken();
        if (!currentAccessTokenResponse.isSuccess()) {
            return currentAccessTokenResponse;
        }
        try {
            String accessToken = currentAccessTokenResponse.getResponseData().getTokenString();
            String response = internalOauthApiClient.revokeAccessToken(channelId, accessToken);
            return LineApiResponse.createAsSuccess(response);
        } catch (IOException e) {
            return LineApiResponse.createAsError(
                    LineApiResponseCode.SERVER_ERROR,
                    new LineApiError(e));
        }
    });
}
 
源代码2 项目: line-sdk-android   文件: InternalApisFragment.java
private void getFriends(View view, String pageRequestToken) {
    startApiAsyncTask("getFriends", () -> {
        LineApiResponse<GetFriendsResponse> response =
                lineApiClient.getFriends(FriendSortField.NAME, pageRequestToken);

        if (response != null && response.isSuccess() && response.getResponseData() != null) {
            GetFriendsResponse getFriendsResponse = response.getResponseData();
            receivers.addFriends(getFriendsResponse.getFriends());

            // get next page if exists
            // postpone 2 seconds to make sure the first response data is logged. ONLY FOR TESTING purpose
            String nextPageRequestToken = getFriendsResponse.getNextPageRequestToken();
            if (nextPageRequestToken != null) {
                view.postDelayed(
                        () -> getFriends(view, nextPageRequestToken),
                        2000
                );
            }
        }

        return response;
    });
}
 
@Test
public void testRevokeAccessToken() throws Exception {
    LineApiResponse<?> expectedResponse = LineApiResponse.createAsSuccess(new Object());
    doReturn(expectedResponse).when(httpClient).post(
            any(Uri.class),
            anyMapOf(String.class, String.class),
            anyMapOf(String.class, String.class),
            any(ResponseDataParser.class));

    LineApiResponse<?> actualResponse = target.revokeAccessToken(CHANNEL_ID, ACCESS_TOKEN);

    assertSame(expectedResponse, actualResponse);

    Map<String, String> expectedPostData = new HashMap<>(2);
    expectedPostData.put("access_token", ACCESS_TOKEN.getAccessToken());
    expectedPostData.put("client_id", CHANNEL_ID);

    verify(httpClient, times(1)).post(
            eq(Uri.parse(API_BASE_URL + "/oauth2/v2.1/revoke")),
            eq(Collections.<String, String>emptyMap()),
            eq(expectedPostData),
            any(ResponseDataParser.class));
}
 
源代码4 项目: line-sdk-android   文件: TalkApiClientTest.java
@Test
public void testSendMessageToMultipleUsersUsingOtt() {
    final LineApiResponse<?> mockResponse = LineApiResponse.createAsSuccess("");
    givenPostWithJsonApiResponse(mockResponse);

    LineApiResponse<List<SendMessageResponse>> actualResult =
            target.sendMessageToMultipleUsers(
                    ACCESS_TOKEN,
                    Collections.emptyList(),
                    Collections.emptyList(),
                    true);

    assertThat(actualResult, sameInstance(mockResponse));

    // Gets ott by target user ids
    verifyApiCallPostWithJson("/" + BASE_PATH_MESSAGE_API + "/" + PATH_OTT_ISSUE);
    responseParserInstanceShouldBe(TalkApiClient.StringParser.class);

    // Send the message using ott
    verifyApiCallPostWithJson("/" + BASE_PATH_MESSAGE_API + "/" + PATH_OTT_SHARE);
    responseParserInstanceShouldBe(TalkApiClient.MultiSendResponseParser.class);
}
 
源代码5 项目: line-sdk-android   文件: LineApiClientImplTest.java
@Test
public void testRefreshTokenWithNoRefreshToken() {
    accessTokenCache.saveAccessToken(ACCESS_TOKEN);
    LineApiResponse<RefreshTokenResult> refreshTokenResponse =
            LineApiResponse.createAsSuccess(new RefreshTokenResult(
                    "newAccessToken", 999L, null, Collections.emptyList()));
    doReturn(refreshTokenResponse)
            .when(internalOauthApiClient)
            .refreshToken(anyString(), any(InternalAccessToken.class));

    LineApiResponse<LineAccessToken> actualResponse = target.refreshAccessToken();

    verify(internalOauthApiClient, times(1)).refreshToken(CHANNEL_ID, ACCESS_TOKEN);
    assertTrue(actualResponse.isSuccess());
    assertNotNull(actualResponse.getResponseData());
    assertEquals("newAccessToken", actualResponse.getResponseData().getTokenString());
    assertEquals(999L, actualResponse.getResponseData().getExpiresInMillis());
    assertTrue(actualResponse.getResponseData().getIssuedClientTimeMillis() > 0);
    InternalAccessToken newAccessToken =
            accessTokenCache.getAccessToken();
    assertNotNull(newAccessToken);
    assertEquals("newAccessToken", newAccessToken.getAccessToken());
    assertEquals(999L, newAccessToken.getExpiresInMillis());
    assertTrue(newAccessToken.getIssuedClientTimeMillis() > 0);
    assertEquals(ACCESS_TOKEN.getRefreshToken(), newAccessToken.getRefreshToken());
}
 
源代码6 项目: line-sdk-android   文件: TalkApiClientTest.java
@Test
public void testGetFriendshipStatus() {
    doReturn(EXPECTED_RESULT).when(httpClient).get(
            any(Uri.class),
            anyMapOf(String.class, String.class),
            anyMapOf(String.class, String.class),
            any(ResponseDataParser.class));

    LineApiResponse<LineFriendshipStatus> actualResult = target.getFriendshipStatus(ACCESS_TOKEN);

    assertSame(EXPECTED_RESULT, actualResult);

    verify(httpClient, times(1)).get(
            eq(Uri.parse(API_BASE_URL + "/friendship/v1/status")),
            eq(Collections.singletonMap("Authorization", "Bearer " + ACCESS_TOKEN.getAccessToken())),
            eq(Collections.emptyMap()),
            responseParserCaptor.capture());

    assertTrue(responseParserCaptor.getValue() instanceof TalkApiClient.FriendshipStatusParser);
}
 
源代码7 项目: line-sdk-android   文件: TalkApiClientTest.java
@Test
public void testGetFriends_shareMessageWithOtt() {
    doReturn(EXPECTED_RESULT).when(httpClient).get(
            any(Uri.class),
            anyMapOf(String.class, String.class),
            anyMapOf(String.class, String.class),
            any(ResponseDataParser.class));

    LineApiResponse<GetFriendsResponse> actualResult =
            target.getFriends(ACCESS_TOKEN, FriendSortField.NAME, "pageToken01", true);

    assertSame(EXPECTED_RESULT, actualResult);

    Map<String, String> expectedQueryParams = new HashMap<>();
    expectedQueryParams.put("sort", "name");
    expectedQueryParams.put("pageToken", "pageToken01");

    verify(httpClient, times(1)).get(
            eq(Uri.parse(API_BASE_URL + "/" + BASE_PATH_GRAPH_API + "/" + PATH_OTS_FRIENDS)),
            eq(Collections.singletonMap("Authorization", "Bearer " + ACCESS_TOKEN.getAccessToken())),
            eq(expectedQueryParams),
            responseParserCaptor.capture());

    assertTrue(responseParserCaptor.getValue() instanceof TalkApiClient.FriendsParser);
}
 
源代码8 项目: line-sdk-android   文件: LineApiClientImpl.java
@Override
@NonNull
public LineApiResponse<LineAccessToken> getCurrentAccessToken() {
    InternalAccessToken internalAccessToken;
    try {
        internalAccessToken = accessTokenCache.getAccessToken();
    } catch (Exception exception) {
        return LineApiResponse.createAsError(
                LineApiResponseCode.INTERNAL_ERROR,
                new LineApiError("get access token fail:" + exception.getMessage())
        );
    }

    if (internalAccessToken == null) {
        return LineApiResponse.createAsError(
                LineApiResponseCode.INTERNAL_ERROR,
                new LineApiError("The cached access token does not exist."));
    }

    return LineApiResponse.createAsSuccess(new LineAccessToken(
            internalAccessToken.getAccessToken(),
            internalAccessToken.getExpiresInMillis(),
            internalAccessToken.getIssuedClientTimeMillis()));
}
 
源代码9 项目: line-sdk-android   文件: TalkApiClientTest.java
@Test
public void testSendMessageToMultipleUsersUsingOtt_getOtt_failed() {
    final LineApiResponse<?> mockResponse = LineApiResponse.createAsError(
            LineApiResponseCode.NETWORK_ERROR, new LineApiError(""));
    givenPostWithJsonApiResponse(mockResponse);

    LineApiResponse<List<SendMessageResponse>> actualApiResponse =
            target.sendMessageToMultipleUsers(
                    ACCESS_TOKEN,
                    Collections.emptyList(),
                    Collections.emptyList(),
                    true);

    assertThat(actualApiResponse.getResponseCode(), sameInstance(mockResponse.getResponseCode()));
    assertThat(actualApiResponse.getErrorData(), sameInstance(mockResponse.getErrorData()));

    // Gets ott by target user ids
    verifyApiCallPostWithJson("/" + BASE_PATH_MESSAGE_API + "/" + PATH_OTT_ISSUE);
    responseParserInstanceShouldBe(TalkApiClient.StringParser.class);

    // Should not send message due to failure of getting ott
    verify(target, never()).sendMessageToMultipleUsersUsingOtt(any(), any(), any());
}
 
源代码10 项目: line-sdk-android   文件: TalkApiClientTest.java
@Test
public void testGetGroups_shareMessageWithOtt() {
    doReturn(EXPECTED_RESULT).when(httpClient).get(
            any(Uri.class),
            anyMapOf(String.class, String.class),
            anyMapOf(String.class, String.class),
            any(ResponseDataParser.class));

    LineApiResponse<GetGroupsResponse> actualResult =
            target.getGroups(ACCESS_TOKEN, "pageToken01", true);

    assertSame(EXPECTED_RESULT, actualResult);

    Map<String, String> expectedQueryParams = new HashMap<>();
    expectedQueryParams.put("pageToken", "pageToken01");

    verify(httpClient, times(1)).get(
            eq(Uri.parse(API_BASE_URL + "/" + BASE_PATH_GRAPH_API + "/" + PATH_OTS_GROUPS)),
            eq(Collections.singletonMap("Authorization", "Bearer " + ACCESS_TOKEN.getAccessToken())),
            eq(expectedQueryParams),
            responseParserCaptor.capture());

    assertTrue(responseParserCaptor.getValue() instanceof TalkApiClient.GroupParser);
}
 
@NonNull
public LineApiResponse<IssueAccessTokenResult> issueAccessToken(
        @NonNull String channelId,
        @NonNull String requestToken,
        @NonNull PKCECode pkceCode,
        @NonNull String redirectUri) {
    final Uri uri = buildUri(apiBaseUrl, BASE_PATH_OAUTH_V21_API, "token");
    final Map<String, String> postData = buildParams(
            "grant_type", "authorization_code",
            "code", requestToken,
            "redirect_uri", redirectUri,
            "client_id", channelId,
            "code_verifier", pkceCode.getVerifier(),
            "id_token_key_type", IdTokenKeyType.JWK.name(),
            "client_version", "LINE SDK Android v" + BuildConfig.VERSION_NAME
    );
    return httpClient.post(
            uri,
            emptyMap() /* requestHeaders */,
            postData,
            ISSUE_ACCESS_TOKEN_RESULT_PARSER);
}
 
源代码12 项目: line-sdk-android   文件: LineApiClientImplTest.java
@Test
public void testRefreshTokenWithApiError() {
    accessTokenCache.saveAccessToken(ACCESS_TOKEN);
    LineApiResponse<RefreshTokenResult> refreshTokenResponse =
            LineApiResponse.createAsError(
                    LineApiResponseCode.INTERNAL_ERROR, LineApiError.DEFAULT);
    doReturn(refreshTokenResponse)
            .when(internalOauthApiClient)
            .refreshToken(anyString(), any(InternalAccessToken.class));

    LineApiResponse<LineAccessToken> actualResponse = target.refreshAccessToken();

    verify(internalOauthApiClient, times(1)).refreshToken(CHANNEL_ID, ACCESS_TOKEN);
    assertFalse(actualResponse.isSuccess());
    assertEquals(ACCESS_TOKEN, accessTokenCache.getAccessToken());
}
 
@Test
public void testNetworkErrorOfGettingAccessToken() throws Exception {
    Intent newIntentData = new Intent();
    doReturn(BrowserAuthenticationApi.Result.createAsSuccess(REQUEST_TOKEN_STR, false))
            .when(browserAuthenticationApi)
            .getAuthenticationResultFrom(newIntentData);
    doReturn(LineApiResponse.createAsError(LineApiResponseCode.NETWORK_ERROR, LineApiError.DEFAULT))
            .when(authApiClient)
            .issueAccessToken(CHANNEL_ID, REQUEST_TOKEN_STR, PKCE_CODE, REDIRECT_URI);

    target.startLineAuthentication();

    Robolectric.getBackgroundThreadScheduler().runOneTask();
    Robolectric.getForegroundThreadScheduler().runOneTask();

    verify(browserAuthenticationApi, times(1))
            .getRequest(activity, config, PKCE_CODE, LINE_AUTH_PARAMS);

    target.handleIntentFromLineApp(newIntentData);

    Robolectric.getBackgroundThreadScheduler().runOneTask();
    Robolectric.getForegroundThreadScheduler().runOneTask();

    verify(activity, times(1)).onAuthenticationFinished(
            LineLoginResult.error(LineApiResponseCode.NETWORK_ERROR, LineApiError.DEFAULT));
}
 
源代码14 项目: line-sdk-android   文件: TalkApiClientTest.java
@Test
public void testGetGroups_notShareMessageWithOtt() {
    doReturn(EXPECTED_RESULT).when(httpClient).get(
            any(Uri.class),
            anyMapOf(String.class, String.class),
            anyMapOf(String.class, String.class),
            any(ResponseDataParser.class));

    LineApiResponse<GetGroupsResponse> actualResult =
            target.getGroups(ACCESS_TOKEN, "pageToken01", false);

    assertSame(EXPECTED_RESULT, actualResult);

    Map<String, String> expectedQueryParams = new HashMap<>();
    expectedQueryParams.put("pageToken", "pageToken01");

    verify(httpClient, times(1)).get(
            eq(Uri.parse(API_BASE_URL + "/graph/v2/groups")),
            eq(Collections.singletonMap("Authorization", "Bearer " + ACCESS_TOKEN.getAccessToken())),
            eq(expectedQueryParams),
            responseParserCaptor.capture());

    assertTrue(responseParserCaptor.getValue() instanceof TalkApiClient.GroupParser);
}
 
源代码15 项目: line-sdk-android   文件: TalkApiClient.java
@NonNull
public LineApiResponse<GetGroupsResponse> getGroups(
        @NonNull InternalAccessToken accessToken,
        @Nullable String pageToken,
        boolean isForOttShareMessage) {
    final String pathSegment = (isForOttShareMessage) ? PATH_OTS_GROUPS : PATH_GROUPS;
    final Uri uri = buildUri(apiBaseUrl, BASE_PATH_GRAPH_API, pathSegment);
    final Map<String, String> queryParams;
    if (!TextUtils.isEmpty(pageToken)) {
        queryParams = buildParams("pageToken", pageToken);
    } else {
        queryParams = Collections.emptyMap();
    }
    return httpClient.get(
            uri,
            buildRequestHeaders(accessToken),
            queryParams,
            GROUP_PARSER);
}
 
@Test
public void testAccessTokenExpiredByPostWithJson() throws Exception {
    setErrorData(HttpURLConnection.HTTP_UNAUTHORIZED, "testErrorMessage".getBytes(CHARSET));

    LineApiResponse<String> responseData = target.postWithJson(
            Uri.parse("https://test"),
            Collections.<String, String>emptyMap() /* requestHeaders */,
            ""  /* postData */,
            new StringResponseParser());

    assertFalse(responseData.isSuccess());
    assertEquals(LineApiResponseCode.SERVER_ERROR, responseData.getResponseCode());
    assertEquals(401, responseData.getErrorData().getHttpResponseCode());
    assertEquals("testErrorMessage", responseData.getErrorData().getMessage());
}
 
@Test
public void testPost() throws Exception {
    Map<String, String> requestHeaders = new HashMap();
    requestHeaders.put("headerKey1", "headerValue1");
    requestHeaders.put("headerKey2", "headerValue2");
    RequestParameter requestParameter = new RequestParameter()
            .put("param1", "value1")
            .put("param2", "value2&=");
    String postData = "param1=value1&param2=value2%26%3D";
    setResponseData("test".getBytes(CHARSET));

    LineApiResponse<String> responseData = target.post(
            Uri.parse("https://test"),
            requestHeaders,
            requestParameter.getMapData(),
            new StringResponseParser());

    verify(target).openHttpConnection(Uri.parse("https://test"));
    verify(httpsURLConnection).setRequestMethod("POST");
    verify(httpsURLConnection).setDoOutput(true);
    verify(httpsURLConnection).setRequestProperty("User-Agent", USER_AGENT);
    verify(httpsURLConnection).setRequestProperty("Accept-Encoding", "gzip");
    verify(httpsURLConnection).setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    verify(httpsURLConnection).setRequestProperty("Content-Length", String.valueOf(postData.getBytes(CHARSET).length));
    verify(httpsURLConnection).setRequestProperty("headerKey1", "headerValue1");
    verify(httpsURLConnection).setRequestProperty("headerKey2", "headerValue2");
    verify(httpsURLConnection).setConnectTimeout(CONNECT_TIMEOUT_MILLIS);
    verify(httpsURLConnection).setReadTimeout(READ_TIMEOUT_MILLIS);

    assertEquals(postData, connectionOutputStream.toString(CHARSET));

    assertTrue(responseData.isSuccess());
    assertEquals("test", responseData.getResponseData());
    assertEquals(LineApiError.DEFAULT, responseData.getErrorData());
}
 
源代码18 项目: line-sdk-android   文件: GetTargetUserTask.java
private void getAllGroups() {
    String nextPageToken = "";
    while (nextPageToken != null) {
        LineApiResponse<GetGroupsResponse> response =
                lineApiClient.getGroups(nextPageToken, true);
        if (!response.isSuccess()) {
            publishProgress(Collections.emptyList());
            return;
        }

        GetGroupsResponse getGroupsResponse = response.getResponseData();
        publishProgress(convertGroupsToTargetUsers(getGroupsResponse.getGroups()));
        nextPageToken = getGroupsResponse.getNextPageRequestToken();
    }
}
 
源代码19 项目: line-sdk-android   文件: SendMessageTask.java
@Override
protected LineApiResponse<List<SendMessageResponse>> doInBackground(List<TargetUser>... targetUsers) {
    List<String> targetUserIds = new ArrayList<>();
    for (TargetUser targetUser : targetUsers[0]) {
        targetUserIds.add(targetUser.getId());
    }
    return lineApiClient.sendMessageToMultipleUsers(targetUserIds, messages, true);
}
 
源代码20 项目: line-sdk-android   文件: SendMessageTask.java
@Override
protected void onPostExecute(LineApiResponse<List<SendMessageResponse>> lineApiResponse) {
    if (apiStatusListener != null) {
        if (lineApiResponse.isSuccess()) {
            apiStatusListener.onSuccess();
        } else {
            apiStatusListener.onFailure();
        }
    }
}
 
源代码21 项目: line-sdk-android   文件: TalkApiClient.java
@NonNull
public LineApiResponse<MembershipStatus> getOpenChatMembershipStatus(
        @NonNull InternalAccessToken accessToken,
        @NonNull String roomId) {
    final Uri uri = buildUri(apiBaseUrl, BASE_PATH_OPENCHAT_API, "openchats", roomId, "members/me/membership");

    return httpClient.get(
            uri,
            buildRequestHeaders(accessToken),
            Collections.emptyMap(),
            OPEN_CHAT_MEMBERSHIP_PARSER);
}
 
源代码22 项目: line-sdk-android   文件: TalkApiClient.java
@NonNull
public LineApiResponse<Boolean> getOpenChatAgreementStatus(
        @NonNull InternalAccessToken accessToken) {
    final Uri uri = buildUri(apiBaseUrl, BASE_PATH_OPENCHAT_API, "terms/agreement");

    return httpClient.get(
            uri,
            buildRequestHeaders(accessToken),
            Collections.emptyMap(),
            OPEN_CHAT_AGREEMENT_STATUS_PARSER);
}
 
源代码23 项目: line-sdk-android   文件: LineApiClientImplTest.java
@Test
public void testGetProfileWithApiCallError() {
    LineApiResponse<LineProfile> expectedResponse = LineApiResponse.createAsError(
            LineApiResponseCode.INTERNAL_ERROR, LineApiError.DEFAULT);
    doReturn(expectedResponse)
            .when(internalTalkApiClient)
            .getProfile(any(InternalAccessToken.class));
    accessTokenCache.saveAccessToken(ACCESS_TOKEN);

    LineApiResponse<LineProfile> actualResponse = target.getProfile();

    assertSame(expectedResponse, actualResponse);
    verify(internalTalkApiClient, times(1)).getProfile(ACCESS_TOKEN);
}
 
源代码24 项目: cordova-line-login-plugin   文件: LineLogin.java
private void verifyAccessToken(CallbackContext callbackContext) {
    LineApiResponse verifyResponse = lineApiClient.verifyToken();
    if (verifyResponse.isSuccess()) {
        callbackContext.success();
    } else {
        this.SDKError(verifyResponse.getResponseCode().toString(), verifyResponse.getErrorData().toString());
    }
}
 
@Test
public void testRefreshErrorByNetworkError() throws Exception {
    when(lineApiClientImpl.getProfile()).thenReturn(
            Results.unauthorized());
    when(lineApiClientImpl.refreshAccessToken()).thenReturn(
            Results.networkError());

    LineApiResponse<LineProfile> response = target.getProfile();

    assertTrue(response.isNetworkError());
    verify(lineApiClientImpl, times(1)).refreshAccessToken();
    verify(lineApiClientImpl, times(1)).getProfile();
}
 
源代码26 项目: line-sdk-android   文件: LineApiClientImplTest.java
@Test
public void testLogoutWithApiCallError() {
    LineApiResponse<?> expectedResponse = LineApiResponse.createAsError(
            LineApiResponseCode.INTERNAL_ERROR, LineApiError.DEFAULT);
    doReturn(expectedResponse)
            .when(internalOauthApiClient)
            .revokeRefreshToken(anyString(), any(InternalAccessToken.class));
    accessTokenCache.saveAccessToken(ACCESS_TOKEN);

    LineApiResponse<?> actualResponse = target.logout();

    assertSame(expectedResponse, actualResponse);
    verify(internalOauthApiClient, times(1)).revokeRefreshToken(CHANNEL_ID, ACCESS_TOKEN);
    assertEquals(ACCESS_TOKEN, accessTokenCache.getAccessToken());
}
 
@Test
public void testNetworkErrorByDelete() throws Exception {
    IOException ioException = new IOException();
    doThrow(ioException).when(httpsURLConnection).connect();

    LineApiResponse<String> responseData = target.delete(
            Uri.parse("https://test"),
            Collections.<String, String>emptyMap() /* requestHeaders */,
            new StringResponseParser());

    assertFalse(responseData.isSuccess());
    assertEquals(LineApiResponseCode.NETWORK_ERROR, responseData.getResponseCode());
    assertEquals(new LineApiError(ioException), responseData.getErrorData());
}
 
@Test
public void testAccessTokenExpiredByDelete() throws Exception {
    setErrorData(HttpURLConnection.HTTP_UNAUTHORIZED, "testErrorMessage".getBytes(CHARSET));

    LineApiResponse<String> responseData = target.delete(
            Uri.parse("https://test"),
            Collections.<String, String>emptyMap() /* requestHeaders */,
            new StringResponseParser());

    assertFalse(responseData.isSuccess());
    assertEquals(LineApiResponseCode.SERVER_ERROR, responseData.getResponseCode());
    assertEquals(401, responseData.getErrorData().getHttpResponseCode());
    assertEquals("testErrorMessage", responseData.getErrorData().getMessage());
}
 
源代码29 项目: line-sdk-android   文件: LineApiClientImpl.java
@NonNull
private LineApiResponse<LineCredential> verifyToken(@NonNull InternalAccessToken accessToken) {
    LineApiResponse<AccessTokenVerificationResult> response =
            oauthApiClient.verifyAccessToken(accessToken);
    if (!response.isSuccess()) {
        return LineApiResponse.createAsError(
                response.getResponseCode(), response.getErrorData());
    }
    AccessTokenVerificationResult verificationResult = response.getResponseData();
    long verifiedClientTimeMillis = System.currentTimeMillis();

    try {
        accessTokenCache.saveAccessToken(
                new InternalAccessToken(
                        accessToken.getAccessToken(),
                        verificationResult.getExpiresInMillis(),
                        verifiedClientTimeMillis,
                        accessToken.getRefreshToken()));
    } catch(Exception exception) {
        return LineApiResponse.createAsError(
                LineApiResponseCode.INTERNAL_ERROR,
                new LineApiError("save access token fail:" + exception.getMessage())
        );
    }

    return LineApiResponse.createAsSuccess(
            new LineCredential(
                    new LineAccessToken(
                            accessToken.getAccessToken(),
                            verificationResult.getExpiresInMillis(),
                            verifiedClientTimeMillis),
                    verificationResult.getScopes()));
}
 
源代码30 项目: line-sdk-android   文件: LineApiClientImpl.java
@Override
@TokenAutoRefresh
@NonNull
public LineApiResponse<GetFriendsResponse> getFriends(
        @NonNull FriendSortField sort,
        @Nullable String nextPageRequestToken) {
    return getFriends(sort, nextPageRequestToken, false);
}