Почему oauth часто требует повторной авторизации пользователя? - PullRequest
0 голосов
/ 17 февраля 2020

Это мой код

    If expire < jsonHelper.currentTimeStamp Or accesstoken = "" Or mustExpire Then
        Dim post = "grant_type=refresh_token&refresh_token=" + refreshToken + "&client_id=" + _apiKey1 + "&client_secret=" + _secret1 + "&scope=trade profile"
        'post = grant_type=refresh_token&refresh_token=def502009e93bd2bd7e25edf065daf164387ceed98d4c575aaf23f44a729cdf998661c9fc1af1fc888b8887e6203f75e2f7989f4357fc4bd0d8fc98017e255afab780a0e1cf94b1098b0cd0a952f16e99b8d0cc70db2d60592e63a3c8e690730fe42fc2a304e0d0a0301fd77ee134ca05a3c4543e2ce3c8501da88bcc0eecba36f7f05202c2c5c11647acfbf22aca342e042a7bd50e760e3130e21c04e1a2c46053f7f1cf6e19e7a2ce9bc98ec5b15fa9775a700e4d968bd8ddcac81cd34fea24691245b4a191feadb62dacb0fbe72e7455df2a83bc0ef4de8a6e150bd1c22e7818888e4fc8c59e6361a1d6ea428930732e7ed3b3c783029e4bf2c0dfce0c6d6eab265844ee4a774c2a6797941bc321f20eda4bb56429381fb2eda2dda9f1594379d9069d02474dc6af9b1c1ad89eb5d8d93f5408388645dbc3bae80eefb79a01b414b8272c966f9f9ebe751750d248b0b0ae5725a2ee6dfca722a4e6856459df30923f143289685dd96f8d24d1f0f5dcb50d2982a5a9e15eb&client_id=229&client_secret=7FF2MQWhDSfSkFZncVi9ZvpYH0GleLFVUc4e2v8S&scope=trade profile
        tokenstring = ""
        For i = 1 To 10
            tokenstring = Await CookieAwareWebClient.downloadString1Async("https://api3.stex.com/oauth/token", post)
            If tokenstring = "" Then
                Await Task.Delay(1000000)
            Else
                saveJtoken(tokenstring)
                jtoken1 = JObject.Parse(tokenstring) 'reparse tokenstring with new string
                Exit For
            End If
        Next i
        If tokenstring = "" Then
            Return ""
            tokenstring = Await getAccessTokenFromCodeAsync()
            If tokenstring = "" Then
                Return ""
            Else
                saveJtoken(tokenstring)
                jtoken1 = JObject.Parse(tokenstring) 'reparse tokenstring with new string
            End If
        End If
    End If

Посмотрите на эту пару кодов

        Dim post = "grant_type=refresh_token&refresh_token=" + refreshToken + "&client_id=" + _apiKey1 + "&client_secret=" + _secret1 + "&scope=trade profile"
        ...
        tokenstring = Await CookieAwareWebClient.downloadString1Async("https://api3.stex.com/oauth/token", post)

Эти 2 кода иногда работают, иногда нет.

Это означает код правильный. Однако, в конце концов, это не удается. Это означает, что я должен заставить пользователя выполнить повторную авторизацию, и я хочу, чтобы это произошло как никогда.

Как это может быть?

Каждый раз, когда я получал токен на предъявителя, я получал рефр sh токен правильно? Я могу получить еще один refre sh токен, используя предыдущий refre sh token right?

Иногда время от времени происходит сбой.

Одна из причин, по которой он может завершиться неудачей, - inte rnet нестабильность. Скажем, у меня есть refreshtoken1. Скажем, я пытаюсь получить refreshtoken2. Скажи, что-то что-то идет не так, и я не получаю refreshtoken2.

Вот и все. Я должен попросить пользователя пройти авторизацию. Это потому, что refreshtoken1 больше не работает, а у меня нет refreshtoken2

Как предотвратить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...