Using Twitter login API

2019-09-20 16:22发布

I am trying to use https://api.periscope.tv/api/v2/loginTwitter to get a response from the server so that I can obtain a cookie for periscope API calls.

I have all of the required values for the request query, but I continue to get the "Bad Request" error (error code 400). Is anyone able to use the loginTwitter API still?

Request headers:

POST /api/v2/loginTwitter?bundle_id=com.bountylabs.periscope&phone_number=&session_key=xxxxxxxx&session_secret=xxxxxxxx&user_id=xxxxxxxx&user_name=xxxxxxxx&vendor_id=81EA8A9B-2950-40CD-9365-40535404DDE4 HTTP/1.1

Authorization:

OAuth oauth_consumer_key="xxxxxxxx",oauth_nonce="cecf203cda273c845cd5121007232666",oauth_signature="xxxxxxxx%3D",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1474786616",oauth_token="xxxxxxxx",oauth_version="1.0"

Oauth signature:

POST&https%3A%2F%2Fapi.periscope.tv%2Fapi%2Fv2%2FloginTwitter%3Fbundle_id%3Dcom.bountylabs.periscope%26phone_number%3D%26session_key%xxxxxxxx%26session_secret%3xxxxxxxx%26user_id%3xxxxxxxx%26user_name%xxxxxxxx%26vendor_id%3D81EA8A9B-2950-40CD-9365-40535404DDE4&bundle_id%3Dcom.bountylabs.periscope%26oauth_consumer_key%3xxxxxxxx%26oauth_nonce%3Dcecf203cda273c845cd5121007232666%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1474786616%26oauth_token%xxxxxxxx%26oauth_version%3D1.0%26phone_number%3D%26session_key%xxxxxxxxMX%26session_secret%xxxxxxxxt%26user_id%xxxxxxxx4%26user_name%xxxxxxxx%26vendor_id%3D81EA8A9B-2950-40CD-9365-40535404DDE4

1条回答
神经病院院长
2楼-- · 2019-09-20 17:11

I have solved the problem thanks to help from another. The problem was that I was passing the request parameters in the URL without encoding them into json. For any that are looking to resolve this problem, here is the solution I arrived at with c#.

            var httpWebRequest = ( HttpWebRequest )WebRequest.Create( "https://api.periscope.tv/api/v2/loginTwitter" );
            httpWebRequest.ContentType = "application/json; charset=UTF-8";
            httpWebRequest.Method = "POST";

            using( var streamWriter = new StreamWriter( httpWebRequest.GetRequestStream() ) ){
                string json = "{" + 
                    "\"bundle_id\":\"com.bountylabs.periscope\"," +
                    "\"phone_number\":\"\"," +
                    "\"session_key\":\""+final_oauth_token+"\"," +
                    "\"session_secret\":\""+final_oauth_token_secret+"\"," +
                    "\"user_id\":\""+user_id+"\"," +
                    "\"user_name\":\""+screen_name+"\"," +
                    "\"vendor_id\":\"81EA8A9B-2950-40CD-9365-40535404DDE4\"" +
                    "}";

                streamWriter.Write( json );
                streamWriter.Flush();
                streamWriter.Close();
            }

            var httpResponse = ( HttpWebResponse )httpWebRequest.GetResponse();
            using( var streamReader = new StreamReader( httpResponse.GetResponseStream() ) ){
                var result = streamReader.ReadToEnd();
                display.Text = "cookie: "+result;
            }
        }

The result yields a cookie in the server's response.

Reference for more detail on this process: Twitter login POST request in Periscope API

查看更多
登录 后发表回答