基本上我正在尝试通过此网址将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:“”“
我不明白这里有什么问题..
答案 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");
}