几天来,我一直在研究是否有可能将 Twitter 功能集成到我正在使用 CocoonJS 开发的游戏中,以便发布带有屏幕截图的高分。CocoonJS 没有开箱即用地提供这个功能(尽管它为 Facebook 提供)。我一直在研究 OAuth 并尝试了信任,试图让应用程序能够向用户展示登录信息。这是通过浏览器成功的。用于此的代码是:
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);
});
}
但是通过 CocoonJS 启动器进行测试时,出现以下错误:
IDTK_LOG_ERROR: [JS] Invoked in void ludei::js::utils::JSUtilities::PrintException line 95: JavaScript Exception (Line: 1337 Tag: 'touchend'): TypeError: undefined is not an object (evaluating 'this.document.cookie.split')
在设备上,没有出现弹出窗口。
然后我尝试看看使用 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" );
}
这给了我一个重复的错误:
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')
在设备上,除了一个小徽标外,屏幕变黑了,我记得当我在桌面浏览器上测试此功能时,我看到它是要求身份验证的弹出窗口的一部分。
这些错误消息对我来说意义不大,不幸的是,当我在 iOS 上(通过 CocoonJS Launcher)运行应用程序时,我无法调试 CocoonJS,因为我只在 Android 上提供此功能。
只是想知道 CocoonJS 中的任何人是否已经完成了我想要实现的目标,以及我所要求的是否真的可行,以及如何让它发挥作用!=)
任何帮助将非常感激。
谢谢丰富