小编Rex*_*Rex的帖子

Facebook上的NetworkOnMainThreadException使用Phonegap 1.6.0登录

我目前正在使用Phonegap 1.6.0和Sencha Touch 1.1创建一个应用程序.最近,在使用Android 4.0.4的智能手机上进行测试时,我们发现Facebook登录并没有像预期的那样完全正常工作.我们正在使用位于此处的Phonegap Facebook插件和Cordova补丁.会发生的是,一旦我们尝试使用Android Honeycomb或更高版本的智能手机登录Facebook,该应用程序就会启动NetworkOnMainThreadException,因为主线程上不允许进行网络操作.此异常仅在Android Honeycomb或更高版本上引发,这就是我们在2.3.3上没有注意到的原因.调用FB.login()并且未达到回调时抛出异常.

我检查了各种线程和主题,但都非常模糊.我知道我必须在一个单独的线程中运行网络操作,但我不确定应该怎么做.线程似乎发生在Java中,但我根本就没有使用任何Java,所以在使用非我编写的代码进行修改之前,我想要一些帮助.

我将稍后尝试缩小导致异常的部分.任何帮助,将不胜感激.

错误堆栈:

05-25 15:42:29.018: I/Web Console(3785): Cordova Facebook Connect plugin initialized successfully. at file:///android_asset/www/cdv-plugin-fb-connect.js:24
05-25 15:42:29.120: D/OpenGLRenderer(3785): Flushing caches (mode 0)
05-25 15:42:30.479: D/ConnectPlugin(3785): authorized
05-25 15:42:30.479: D/ConnectPlugin(3785): Bundle[{expires_in=5177550, access_token=censored, code=censored}]
05-25 15:42:30.503: D/AndroidRuntime(3785): Shutting down VM
05-25 15:42:30.503: W/dalvikvm(3785): threadid=1: thread exiting with uncaught exception (group=0x40a671f8)
05-25 15:42:30.511: E/AndroidRuntime(3785): FATAL EXCEPTION: main
05-25 15:42:30.511: E/AndroidRuntime(3785): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=32665, result=-1, data=Intent { (has extras) …
Run Code Online (Sandbox Code Playgroud)

facebook exception cordova networkonmainthread

7
推荐指数
1
解决办法
6030
查看次数

GIT:两个不同的存储库,带有一个共享文件夹

我目前正在创建一个移动应用程序,我使用Phonegap将其部署到不同的平台.我们目前已经为Android平台和iOS平台创建了应用程序.Android one有一个git存储库,iOS还没有.两个应用程序版本都有一个非常相似的www文件夹(只有phonegap.js和插件文件不同).我希望为iOS创建一个辅助GIT存储库,它从原始存储库(Android)共享www文件夹,因此我不必每次都复制粘贴文件.

这可能吗?

git android repository ios cordova

5
推荐指数
1
解决办法
4454
查看次数

Symfony2安全编码器无法识别UserInterface实例

我最近开始为我的Symfony2项目设置安全性.我选择使用盐对sha256进行编码.当我尝试使用数据库中的示例帐户登录时(使用自我计算的sha256 salt/hash),它在没有给我任何错误消息的情况下仍然失败,我无法弄清楚原因.我决定在Controller的loginAction()方法中添加一些简单的代码.当用户无法使用指定的表单登录时,这是Symfony2调用的方法.我输入了以下代码:

$factory = $this->get('security.encoder_factory');
$em = $this->container->get('doctrine')->getEntityManager();
$userRep = $em->getRepository('MyProjectMyBundle:Users');
$user = $userRep->find(2);

$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword('cookie', 'thisisasalt');
$user->setPassword($password);
print($password);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试登录时,Symfony2给了我以下错误:

Catchable Fatal Error: Argument 1 passed to Symfony\Component\Security\Core\Encoder\EncoderFactory::getEncoder() must be an instance of Symfony\Component\Security\Core\User\UserInterface, instance of MyProject\MyBundle\Entity\Users given, called in /var/www/Symfony/src/MyProject/MyBundle/Controller/MainController.php on line 35 and defined in /var/www/Symfony/vendor/symfony/src/Symfony/Component/Security/Core/Encoder/EncoderFactory.php line 33
Run Code Online (Sandbox Code Playgroud)

所以基本上,它说的是getEncoder()必须是一个实例的论证Symfony\Component\Security\Core\User\UserInterface.但是,当我检查MyProject\MyBundle\Entity\Users.php时,它从以下行开始:

<?php
namespace MyProject\MyBundle\Entity;

use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\ORM\Mapping as ORM;

...
Run Code Online (Sandbox Code Playgroud)

所以Users类实际上实现了UserInterface类.它包含UserInterface类中的所有函数.我已经按照Symfony2教程告诉我的方式创建了所有这些文件.Symfony2无法将我的Users实例识别为UserInterface实例的原因是什么?

PS:数据库是由其他人创建的,我只需要使用它.Users表包含的信息不仅仅是UserInterface所需的信息.

security encoder sha256 symfony

3
推荐指数
1
解决办法
5256
查看次数