【问题标题】:Sharing a base64 image on Twitter using javascript使用 javascript 在 Twitter 上共享 base64 图像
【发布时间】:2014-04-24 14:26:39
【问题描述】:

我花了好几个小时来解决这个问题......但找不到任何教程或示例。试图实现某些东西,但遇到了可怕的错误。

我正在处理客户端幻灯片,似乎 Twitter 的 REST Api 中的“POST statuses/update_with_media”是专门为共享图像数据 url 而设计的,但最初,Twitter 文档非常差,并且没有示例代码。我什至不确定如何在 ajax 请求中提供 user_secret、user_token、consumer_key 和 consumer_secret。这就是我所做的。

        var fd = new FormData();
        fd.append("oauth_consumer_key", "knC68njKLjXrRljSxhE3uywsi");
        fd.append("status", "");
        fd.append("media[]", base64_string);

        $.ajax({
            url:"https://api.twitter.com/1.1/statuses/update_with_media.json",
            type:"POST",
            data:fd,
            processData:false,
            contentType: "multipart/form-data",
            cache:false,
            success:function(data){
                alert('Post was published.');
            },
            error:function(shr,status,data){
                alert('Post was not published.');
            },
            complete:function(){
            }
        });

我知道这是一个糟糕的尝试,但我只能这样做。这给出了以下错误。

XMLHttpRequest cannot load https://api.twitter.com/1.1/statuses/update_with_media.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.0.101' is therefore not allowed access. 

我在本地 php 服务器上运行它。对此的任何示例或教程将不胜感激。

谢谢。

【问题讨论】:

    标签: javascript ajax twitter


    【解决方案1】:

    我不知道这个 API 调用的具体细节,但乍一看,您不能对与您的页面来源不同的服务器进行 ajax 调用。因此,您不能对 twitter api 进行 ajax 调用,除非 twitter 支持CORS。您收到的错误消息正是表明了这一点。解决此问题的唯一方法是从您的服务器发出 twitter api 调用,然后让您的页面对您的服务器进行 ajax 调用。

    【讨论】:

    • 谢谢,你的意思是没有服务器的帮助就无法从客户端执行 Twitter 图像共享?
    • 如果您需要进行 POST,那么至少设置一个简单的代理是可行的方法。如果您可以使用 GET 来完成,那么 JSONP 可能是一种选择。查看 corsproxyapitools 了解使用外部代理设置 CORS 的简单解决方案。我也是Apirise 的创始人,它将提供类似的功能。
    猜你喜欢
    • 2012-11-22
    • 2016-05-31
    • 2022-07-17
    • 2018-04-23
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    相关资源
    最近更新 更多