Cordova Oauth将base64图片发布到Twitter

时间:2017-03-02 12:49:06

标签: cordova http post twitter media

基本上我正在尝试通过此网址将base64 image上传到Twitter; upload.twitter.com/1.1/media/upload.json。我读了twitter ref,我尝试了很多方法将(http)base64图像发布到twitter但是没有用。这是我的代码;

    /* creating sign. first */
                createTwitterSignature('POST', 'https://upload.twitter.com/1.1/media/upload.json', tuserTWToken, tuserTWSecret, postMessage, base64B);



    /* http post*/
                $http({
                    method: "post",
                    url: "https://upload.twitter.com/1.1/media/upload.json",
                    params: {
                            media: base64B
                            },
                    headers: {
                            "Content-Type": "multipart/form-data"
                             }
                    }).success(function (result) {
                                    console.log("OMSSMSS::: " + result);
                                }).error(function (error) {
                                    console.log("TWWWERROR: " + JSON.stringify(error));
                });



                //Create the Signature
            function createTwitterSignature(method, url, usertoken, usersecret, message, mediaData) {
                    console.log("creating sign.");
                    var oauthObject = {
                                        oauth_consumer_key: clientId,
                                        oauth_nonce: $cordovaOauthUtility.createNonce(32),
                                        oauth_signature_method: "HMAC-SHA1",
                                        oauth_token: usertoken,
                                        oauth_timestamp: Math.round((new Date()).getTime() / 1000.0),
                                        oauth_version: "1.0",
                                    };

            var signatureObj =      $cordovaOauthUtility.createSignature(method, url,
                                            oauthObject, {
                                            media: mediaData
                                        }, clientSecret, usersecret);
                                    $http.defaults.headers.common.Authorization =
                                    signatureObj.authorization_header;

                                    console.log("Done sign");
                                }

它返回错误但不是错误代码。回复:

  

TWWWERROR:“”“

我不明白这里有什么问题..

1 个答案:

答案 0 :(得分:0)

最后我在2天后解决了。 这是代码;

                    createTwitterSignature('POST', 'https://upload.twitter.com/1.1/media/upload.json', tuserTWToken, tuserTWSecret, postMessage, base64B);

                                $http({
                                    method: "post",
                                    url: "https://upload.twitter.com/1.1/media/upload.json",
                                    headers: {
                                        "Content-Type": "application/x-www-form-urlencoded"
                                    },
                                    transformRequest: function (obj) {
                                        var str = [];
                                        for (var p in obj)
                                            str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
                                        return str.join("&");
                                    },
                                    data: {
                                        media_data: base64B
                                    }
                                }).success(function (result) {
                                console.log("OMSSMSS::: " + result);
                            }).error(function (error) {
                                console.log("TWWWERROR: " + JSON.stringify(error));
                           });

                           //Create the Signature
                                function createTwitterSignature(method, url, usertoken, usersecret, message, mediaData) {
                                    console.log("creating sign.");
                                    var oauthObject = {
                                        oauth_consumer_key: clientId,
                                        oauth_nonce: $cordovaOauthUtility.createNonce(32),
                                        oauth_signature_method: "HMAC-SHA1",
                                        oauth_token: usertoken,
                                        oauth_timestamp: Math.round((new Date()).getTime() / 1000.0),
                                        oauth_version: "1.0"
                                    };
                      var signatureObj =  $cordovaOauthUtility.createSignature(method, url,
                                        oauthObject, {
                                        media_data: mediaData
                                    }, clientSecret, usersecret);
                                $http.defaults.headers.common.Authorization =
                                signatureObj.authorization_header;

                                console.log("Done sign");
                            }