Javascript CocoonJS应用程序发布推文和图片
几天来,我一直在研究将推特功能与屏幕截图集成到我正在与CocoonJS开发的游戏中的可能性。CocoonJS并没有提供这种开箱即用的功能(尽管它在Facebook上提供)。我一直在研究OAuth,并尝试使用信任,试图让应用程序能够向用户提供登录信息。这是通过浏览器成功实现的。用于此操作的代码是:Javascript CocoonJS应用程序发布推文和图片,javascript,oauth,twitter-oauth,cocoonjs,hello.js,Javascript,Oauth,Twitter Oauth,Cocoonjs,Hello.js,几天来,我一直在研究将推特功能与屏幕截图集成到我正在与CocoonJS开发的游戏中的可能性。CocoonJS并没有提供这种开箱即用的功能(尽管它在Facebook上提供)。我一直在研究OAuth,并尝试使用信任,试图让应用程序能够向用户提供登录信息。这是通过浏览器成功实现的。用于此操作的代码是: test1 = function() { var tempLogo = "<base64EncodedImg>"; OAuth.initialize("<public
test1 = function() {
var tempLogo = "<base64EncodedImg>";
OAuth.initialize("<public key>", {cache:true});
OAuth.popup("twitter").then(function(result) {
var data = new FormData();
data.append('status', 'This is a test');
data.append('media[]', Utils.b64toBlob(tempLogo), 'logo.png');
return result.post('/1.1/statuses/update_with_media.json', {
data: data,
cache:false,
processData: false,
contentType: false
});
}).done(function(data){
var str = JSON.stringify(data, null, 2);
console.log("Success: " + str);
}).fail(function(e){
var errorTxt = JSON.stringify(e, null, 2);
console.log("Success: " + errorTxt);
});
}
在设备上,弹出窗口没有出现
然后我试着看看如何使用hello.js。当我在浏览器中运行时,我再次能够在我的游戏中快速启动和运行他们的演示。我使用了以下代码:
test2 = function() {
hello.init({
'twitter' : '<twitter client id>'
},
{
redirect_uri:'redirect.html',
});
// Twitter instance
var twitter = hello('twitter');
// Login
twitter.login().then( function(r){
// Get Profile
return twitter.api('me');
}, "LOG" )
.then( function(p){
// Put in page
document.getElementById('login').innerHTML = "<img src='"+ p.thumbnail + "' width=24/>Connected to "+ 'twitter'+" as " + p.name;
}, "LOG" );
}
在设备上,除了一个小徽标外,屏幕变黑了。我记得我在桌面浏览器上测试这项功能时,看到一个小徽标,它是请求验证的弹出窗口的一部分
这些错误消息对我来说意义不大,不幸的是,当我在iOS上运行CocoonJS应用程序时(通过CocoonJS Launcher),我无法调试CocoonJS,因为我只在Android上提供了这个功能
我只是想知道我想要实现的目标是否已经被CocoonJS中的任何人完成了,我所要求的是否真的是可能的,以及如何让它工作!=)
任何帮助都将不胜感激
谢谢
RichCocoonJS中的Canvas+环境既不支持Cookie,也不支持大DOM。它(顾名思义)是一个纯画布环境。但您有一些选项(警告:尚未测试): 1.-将用户发送到系统浏览器。您可以打开传递URL的系统浏览器。我真的不知道这是否是一个选择。 2.-在WebView中为此打开会话。CocoonJS允许使用扩展API在WebView上加载甚至显示内容。您将有两个运行的环境:Canvas+和WebView,在其中每个环境中加载完全不同的web内容。好消息是您可以在它们之间传递消息(eval-s) 有关Canvas+和WebView(理论)的更多信息: 有关最新的扩展API: 3.-直接为你的应用选择WebView+。它的性能可能不如Canvas+,但它是一个完整的抓取浏览器,所以所有这些代码都应该可以工作 我的推荐?先测试3。如果这对你来说是一个好的选择,那么就去做(理解它的局限性)。如果您确实想使用Canvas+,请先快速测试1,如果不适合,则测试2
希望这能有所帮助。谢谢您如此全面的回答!选项3,我已经在WebView(+)中测试了我的游戏。我不能认为这是一个选项,因为帧率真的不好,然而,游戏运行在完全60fps的画布+。关于选项1,我只能通过HTTP POST(使用base64编码的图像)发送带有图像的tweet,因此我认为我不能使用此选项。选项2,我不知道!我可以看到这一点,但我认为通过WebView发布HTTP帖子是不可能的,因为我必须将它指向一个远程URL。我会进一步调查的。如果你还有其他想法,我很高兴听到:)
test2 = function() {
hello.init({
'twitter' : '<twitter client id>'
},
{
redirect_uri:'redirect.html',
});
// Twitter instance
var twitter = hello('twitter');
// Login
twitter.login().then( function(r){
// Get Profile
return twitter.api('me');
}, "LOG" )
.then( function(p){
// Put in page
document.getElementById('login').innerHTML = "<img src='"+ p.thumbnail + "' width=24/>Connected to "+ 'twitter'+" as " + p.name;
}, "LOG" );
}
IDTK_LOG_ERROR: [JS] Invoked in void ludei::js::utils::JSUtilities::PrintException line 95: JavaScript Exception (Line: 13 Tag: 'timer'): TypeError: undefined is not an object (evaluating 'e.value.length')