2

ユーザーのユーザー名と OAuth トークンを取得する Twitch API を使用してプログラムを作成しています。現在、私のウェブサイトには「Connect with Twitch」ボタンがあり、ユーザーはこれを使用して twitch にサインインし、API に接続して OAuth トークンを取得するために使用できるアクセス トークンを (URL への GET 要求として) 返すことができます。これは私がその部分のために持っているコードです:

if ($_SERVER['REQUEST_METHOD'] == "GET") {
    if (isset($_GET['code']) && !empty($_GET['code'])) {
        $code = $_GET['code'];

        //Getting OAuth
        $params = array(
            'client_id' => 'my_client_id',
            'client_secret' => 'my_client_secret',
            'grant_type' => 'authorization_code',
            'redirect_uri' => 'http://mytwitchapp.com/register.php', //Not my actual url
            'code' => $code
        );

        $oauthResult = post_url_contents("https://api.twitch.tv/kraken/oauth2/token", $params);
        $json_decoded_oauthResult = json_decode($oauthResult, true);
        $oauth = $json_decoded_oauthResult['access_token'];


    }
}

これは私が使用する post_url_contents() 関数です:

function post_url_contents($url, $fields) {
    $fields_string = '';
    foreach($fields as $key=>$value) { $fields_string .= $key.'='.urlencode($value).'&'; }
    rtrim($fields_string, '&');

    $ch = curl_init();
    $timeout = 60;

    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_POST, count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

    //SSL certificates
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/cert/DigiCertGlobalRootCA.crt");

    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

上記のコードは、OAuth キーを取得するために正常に機能します。ユーザーに関するトップレベルの統計情報を提供するはずだと読んだ$params配列をに送信しようとしましたが、返される応答は(「リダイレクト」はhttp://twitch.tv/krakenへのハイパーリンクです) です。https://api.twitch.tv/kraken/You are being redirected

どんな助けでも大歓迎です!

4

1 に答える 1

3

それで、いろいろいじった後、私はそれを行う方法を見つけました(かなり単純であることがわかりました)。

最初のスニペットのコードの下には、次のものがあります。

//Getting username
$usernameResult = file_get_contents("https://api.twitch.tv/kraken?oauth_token=" . $oauth);
$json_decoded_usernameResult = json_decode($usernameResult, true);
echo $username = $json_decoded_usernameResult['token']['user_name'];

この情報は、POST ではなく GET メソッドとして送信するだけでよいためfile_get_contents()、OAuth キーを使用して URL の末尾に追加するだけです。その後、返されたデータを調べてユーザー名を取得します。

于 2014-08-11T21:18:21.973 に答える