国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Ralat OAuth 2.0 Twitter menggesa "Nilai token yang diluluskan adalah tidak sah"
P粉865900994
P粉865900994 2023-12-16 14:06:37
0
1
965

Sunting: Lihat penyelesaiannya. Masalahnya terletak pada cara perpustakaan Twitter diwujudkan.

Saya cuba mendapatkan kebenaran Twitter menggunakan OAuth2. Saya boleh membuatnya berfungsi dalam skrip ujian mudah, tetapi apabila saya cuba menggunakannya dalam pemalam WordPress saya, ia tidak berfungsi.

Saya menggunakan klien OAuth2 PHP League dan perpustakaan yang saya tulis untuk menyambungkannya ke Twitter skrip ujian ada dalam fail readme.

Skrip ujian menyimpan keadaan OAuth2 dalam $_SESSION; aplikasi sebenar menyimpannya dalam WordPress sementara. Saya telah mengesahkan integriti data melalui paip:

Data daripada perpustakaan Twitter selepas menjana URL pengesahan:

Array
(
    [url] => https://twitter.com/i/oauth2/authorize?redirect_uri=https%3A%2F%2Fsmol.blog%2Fwp-json%2Fsmolblog%2Fv2%2Fconnect%2Fcallback%2Ftwitter&code_challenge=EV7BCVYmkvCnIlVLH6cVzrvjNloQlleAkkYwLLgg41w&code_challenge_method=S256&state=fd5824ef415aa325f1f68d3504bb16b3&scope=tweet.read%20users.read%20offline.access&response_type=code&approval_prompt=auto&client_id=MjVXMnRGVUN5Ym5lcVllcTVKZkk6MTpjaQ
    [state] => fd5824ef415aa325f1f68d3504bb16b3
    [verifier] => u7Zbf1gVEFZLyTgr_2Hk~i5P2pt8VgicyhZgdeO0pAyIZqhSoYqglHaIxsNRjHz0AHpwhlU1~Q
)

Data diekstrak daripada WordPress sementara semasa panggil balik (disimpan sedikit berbeza):

Array
(
    [id] => fd5824ef415aa325f1f68d3504bb16b3
    [userId] => 1
    [info] => Array
        (
                [verifier] => u7Zbf1gVEFZLyTgr_2Hk~i5P2pt8VgicyhZgdeO0pAyIZqhSoYqglHaIxsNRjHz0AHpwhlU1~Q
        )

)

Minta objek dari titik akhir token Twitter:

GuzzleHttp\Psr7\Request Object
(
        [method:GuzzleHttp\Psr7\Request:private] => POST
    [requestTarget:GuzzleHttp\Psr7\Request:private] => 
    [uri:GuzzleHttp\Psr7\Request:private] => GuzzleHttp\Psr7\Uri Object
        (
                [scheme:GuzzleHttp\Psr7\Uri:private] => https
            [userInfo:GuzzleHttp\Psr7\Uri:private] => 
            [host:GuzzleHttp\Psr7\Uri:private] => api.twitter.com
            [port:GuzzleHttp\Psr7\Uri:private] => 
            [path:GuzzleHttp\Psr7\Uri:private] => /2/oauth2/token
            [query:GuzzleHttp\Psr7\Uri:private] => 
            [fragment:GuzzleHttp\Psr7\Uri:private] => 
            [composedComponents:GuzzleHttp\Psr7\Uri:private] => 
        )

    [headers:GuzzleHttp\Psr7\Request:private] => Array
        (
                [Host] => Array
                (
                        [0] => api.twitter.com
                )

            [content-type] => Array
                (
                        [0] => application/x-www-form-urlencoded
                )

            [Authorization] => Array
                (
                        [0] => Basic [base64-encoded app id and secret redacted]
                )

        )

    [headerNames:GuzzleHttp\Psr7\Request:private] => Array
        (
                [content-type] => content-type
            [host] => Host
            [authorization] => Authorization
        )

    [protocol:GuzzleHttp\Psr7\Request:private] => 1.1
    [stream:GuzzleHttp\Psr7\Request:private] => GuzzleHttp\Psr7\Stream Object
        (
                [stream:GuzzleHttp\Psr7\Stream:private] => Resource id #101
            [size:GuzzleHttp\Psr7\Stream:private] => 
            [seekable:GuzzleHttp\Psr7\Stream:private] => 1
            [readable:GuzzleHttp\Psr7\Stream:private] => 1
            [writable:GuzzleHttp\Psr7\Stream:private] => 1
            [uri:GuzzleHttp\Psr7\Stream:private] => php://temp
                [customMetadata:GuzzleHttp\Psr7\Stream:private] => Array
                    (

                )

            )

    )

Teks permintaan di atas:

client_id=MjVXMnRGVUN5Ym5lcVllcTVKZkk6MTpjaQ&client_secret=[redacted]&grant_type=authorization_code&code=aTVUMDkybzdsVmExOEQ5MjdrVjVOQVZ3YTVDbUdmTXRDMktZSzBaSGFqVk5LOjE2NjUzNjc1MjIyNjg6MToxOmFjOjE&code_verifier=u7Zbf1gVEFZLyTgr_2Hk~i5P2pt8VgicyhZgdeO0pAyIZqhSoYqglHaIxsNRjHz0AHpwhlU1~Q

Ralat:

PHP Fatal error:  Uncaught League\OAuth2\Client\Provider\Exception\IdentityProviderException: Value passed for the token was invalid. in /var/www/html/wp-content/plugins/smolblog-wp/vendor/smolblog/oauth2-twitter/src/Twitter.php:169

Saya tahu saya merindui sesuatu yang bodoh di sini. Tetapi saya tidak boleh untuk hidup saya memikirkan apa. Terdapat lebih banyak kod dalam aplikasi sebenar berbanding dalam skrip ujian, tetapi saya telah mengesahkan data pada berbilang titik dalam timbunan, termasuk sebelum menghantarnya ke Twitter. Adakah terdapat apa-apa lagi yang perlu saya uji, atau adakah sesuatu yang saya terlupa?

P粉865900994
P粉865900994

membalas semua(1)
P粉155710425

Ralat ditemui. Dalam skrip ujian, panggilan redirectUri 被傳遞到 OAuth2 客戶端的構造函數(shù)中;在應用程序中,它被傳遞到 getAuthorizationUrl 函數(shù)中。這適用于對 Twitter 的初始調用,但(顯然)getAccessToken juga memerlukan data ini. Jadi inilah penyelesaiannya.

Lama dan rosak:

new Twitter([
    'clientId' => $app->env->twitterAppId ?? '',
    'clientSecret' => $app->env->twitterAppSecret ?? '',
])

Tempat panas baharu:

new Twitter([
    'clientId' => $app->env->twitterAppId ?? '',
    'clientSecret' => $app->env->twitterAppSecret ?? '',
    'redirectUri' => "{$app->env->apiBase}connect/callback/twitter",
])
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan