Periscope login via Twitter Unauthorized error

时间:2015-12-04 21:20:27

标签: java api twitter login

I'm trying log in Periscope via Twitter. I use Twiter4j library. So, what I'm do:
Firstly, I use my Twitter app, which I create in apps.twitter.com and try to log in twitter with pin code. It is ok. Then I use access token key and secret and do POST request to Periscope with getted data and get response: Unauthorized (401). I don't know why it happens.

ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setOAuthConsumerKey("XHky7Ox7g1IDcwtQnrJF47zP")
        .setOAuthConsumerSecret("5s0usRGSxbNYCFVLYeJIuhW0SStbFYXd6kX2cZ2TCQHQNjZf")
        .setOAuthAccessToken(null)
        .setOAuthAccessTokenSecret(null);

Configuration configuration = builder.build();
TwitterFactory factory = new TwitterFactory(configuration);
Twitter User = factory.getInstance();

RequestToken requestToken = User.getOAuthRequestToken();
AccessToken accessToken = null;

URL requestUrl = new URL(requestToken.getAuthenticationURL());
System.out.println(requestUrl);
System.out.print("Enter pin-code: ");
String pin = (new Scanner(System.in)).nextLine();

try {
    if (pin.length() > 0)
        accessToken = User.getOAuthAccessToken(requestToken, pin);
    else
        accessToken = User.getOAuthAccessToken();

} catch (TwitterException te) {
    if (401 == te.getStatusCode())
        System.out.println("Unable to get the access token.");
    else
        te.printStackTrace();
}

loginPeriscope(accessToken);

and loginPeriscope() method:

private static void loginPeriscope(AccessToken accessToken) throws IOException, JSONException {
    URL url = new URL("https://api.periscope.tv/api/v2/loginTwitter");

    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setDoOutput(true);
    connection.setDoInput(true);
    connection.setRequestProperty("Content-Type", "application/json");
    connection.setRequestProperty("Accept", "application/json");
    connection.setRequestMethod("POST");

    JSONObject data = new JSONObject();
    data.put("bundle_id", "com.bountylabs.periscope");
    data.put("phone_number", "");
    data.put("user_name", accessToken.getScreenName());
    data.put("vendor_id", "81EA8A9B-2950-40CD-9365-40535404DDE4");
    data.put("session_key", accessToken.getToken());
    data.put("session_secret", accessToken.getTokenSecret());
    data.put("user_id", accessToken.getUserId());

    OutputStreamWriter output = new OutputStreamWriter(connection.getOutputStream());
    output.write(data.toString());
    output.flush();

    StringBuilder sb = new StringBuilder();
    int httpResult = connection.getResponseCode();

    if (httpResult == HttpURLConnection.HTTP_OK) {
        BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
        String line;
        while ((line = br.readLine()) != null)
            sb.append(line).append("\n");

        br.close();
        System.out.println("Response: " + sb.toString());

    } else {
        System.out.println("Response: " + connection.getResponseMessage() + ",  Status: " + httpResult);
    }
}

0 个答案:

没有答案