1

我想使用以下代码访问 twitch api。

package droa.app.twitch;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URISyntaxException;
import java.util.ArrayList;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

public class Notifier {

    /**
     * @param args
     * @throws URISyntaxException 
     * @throws IOException 
     * @throws ClientProtocolException 
     */
    public static void main(String[] args) throws URISyntaxException, ClientProtocolException, IOException {
        HttpPost request = new HttpPost("https://api.twitch.tv/kraken/oauth2/token");
        org.apache.http.client.HttpClient client = new DefaultHttpClient();
        ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
        postParameters.add(new BasicNameValuePair("grant_type", "password"));
        postParameters.add(new BasicNameValuePair("client_id", Credentials.clientid));
        postParameters.add(new BasicNameValuePair("client_secret", Credentials.clientsecret));
        postParameters.add(new BasicNameValuePair("username", Credentials.username));
        postParameters.add(new BasicNameValuePair("password", Credentials.password));
        postParameters.add(new BasicNameValuePair("scope", "user_read"));
        request.setEntity(new UrlEncodedFormEntity(postParameters));
        HttpResponse httpResponse = client.execute(request);    

        BufferedReader rd = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent()));

        String line = "";
        while ((line = rd.readLine()) != null) {
            System.out.println(line);
            }


    }

}

但它似乎不起作用,我得到一个错误。

{"status":403,"message":"客户端 ID chodustnuqjzkc07ohd3rfkbzrlopzb","error":"Forbidden"}

我遵循了https://github.com/justintv/Twitch-API/blob/master/password-credentials.md上的官方指南

我想知道,我做错了什么?

4

1 回答 1

1

我一直在尝试做同样的事情。如果你不使用 JavaScript,它看起来是不可能的!我会尝试 curl-java:http ://curl.haxx.se/libcurl/java/ 我无法让它工作,但你可以!

但是看看您的回复,我会发现您在 Twitch 上的客户无法使用密码授权流程。如果是这样,这就是为什么我的 java 应用程序不能正常工作的原因。如果 API 拒绝用户密码授予流程,我会非常恼火……尤其是因为没有人告诉我!

“由于处理用户密码的敏感性,这种类型的授权流程只允许在个案的基础上。如果您认为您的应用程序是一个好的候选人,请直接与我们联系。” -直接从他们的页面!一直以来,我们都做对了!我将代表我与他们联系,(我仅在这个问题上就花了大约一个月的时间)。

于 2014-01-27T04:21:32.840 回答