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);
}
}