0

Facebook は一部の API 呼び出しに application/json ではなく text/plain で応答しているようです。oauth エンドポイントhttps://graph.facebook.com/oauth/access_tokenはその一例です。これは、vert.x oauth クライアントの実装を混乱させるようです。これは失敗する呼び出しです:

oauth2.getToken(new JsonObject()
                        .put("code", code)
                        .put("redirect_uri", callbackUrl),
                res -> {
                    if (res.failed()) {
                       logger.warn(res.cause().getMessage());
                    } else {
                       AccessToken = res.result();
                       // ...etc...
                    }

ログに記録されたメッセージは次のとおりです。Cannot handle content type: text/plain

だから私の質問は、Facebook プロバイダーのためだけに独自のメソッドを実装するという明白な解決策とは別に、getToken()実装にプレーンテキストの応答を解析させる他の方法はありますか? 次のような単純な URL エンコード文字列です。access_token=foo&expires=5179336

私が気付いていないJSONでFacebookの回答を作成する方法はありますか?

4

1 に答える 1

0

新しいバージョンの Facebook API を使用してください。v2.3 では、oauth/access_token の形式が JSON を返すように変更されました。

したがって、 https://www.facebook.com/v2.3/oauth/access_tokenhttps://www.facebook.com/v2.7/oauth/access_tokenは JSON を形式で返します{"access_token": {TOKEN}, "token_type":{TYPE}, "expires_in":{TIME}}

あなたまたはあなたが使用している SDK が uri https://graph.facebook.com/oauth/access_tokenを使用している場合、現在のバージョンではなく v2.0 API を使用しています。

于 2016-07-24T22:43:30.173 に答える