小编cic*_*ska的帖子

来自Android客户端的AccountManager的AuthToken不再工作

我很生气.我正在尝试使用Java中的Google App Engine作为服务器,为Android构建一个基于回合制的多人在线游戏.

它们看起来非常合适.Android需要一个Google帐户,GAE使用Google帐户进行身份验证,同时具有免费和可扩展性.

因此,在假期之前,我可以使用Android 2.0中的新AccountManager API从我的Android客户端获取我的GAE应用程序的身份验证.以下代码允许您访问用户Google帐户的AuthToken,然后将其用于身份验证,以便用户无需手动输入其帐户用户名和密码:

   AccountManager mgr = AccountManager.get(this); 
   Account[] accts = mgr.getAccountsByType("com.google"); 
   Account acct = accts[0];
   AccountManagerFuture<Bundle> accountManagerFuture = mgr.getAuthToken(acct, "ah", null, this, null, null);
   Bundle authTokenBundle = accountManagerFuture.getResult(); 
   String authToken = authTokenBundle.get(AccountManager.KEY_AUTHTOKEN).toString();
Run Code Online (Sandbox Code Playgroud)

然后我能够将生成的AuthToken字符串附加到适当的URL并获得一个有效的cookie,然后我可以将其用于所有进一步的请求.唯一的问题是,上周的某个时候它刚刚停止为我工作.现在当我尝试使用上面代码中的AuthToken时,我没有返回cookie并且我的代码为丢失的cookie抛出了NullPointerException.

当我回到过去的方式时,当用户手动输入他们的Google用户名和密码并且我从" https://www.google.com/accounts/ClientLogin " 获得AuthToken时,它运行正常.

请告诉我有人使用用户手机上的Google帐户使用AuthToken为Google App Engine应用构建了一个Android客户端,并告诉我一些为什么不再有效的线索.

我真的很想做这个工作.我的替代方案是要求用户输入他们的凭证(这是笨重的,他们不应该做的),或者与服务器的另一个解决方案一起使用.

提前致谢.

authentication google-app-engine android accountmanager

36
推荐指数
1
解决办法
2万
查看次数

在RecyclerView中选择项目

类似的问题已经被问到,但我不能让他们中的任何一个工作.

我想要的是在RecyclerView中选择项目,更改该项目视图的背景,并存储所选项目的位置.

主要问题是你有onCreateViewHolder(在适配器中),onBindViewHolder(在适配器中)和ViewHolder构造函数,并且每个人都在使用不同的方法.现在,我甚至不知道将onClickListener放在哪里(在以前的项目中我把它放在ViewHolder中),因为人们也在建议另外两种方法.

我的想法是将每个ViewHolder(或View)存储在列表中,这样我就可以引用每一行,并从那里更改背景.但这对我不起作用,因为当我尝试从三个地方(onCreateVH,onBindVH,VH类)中的任何一个添加到View(或ViewHolders)列表时,我的应用程序因某种原因崩溃(空指针ex).

有什么建议?在哪里以及如何实施它?

android android-recyclerview

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

带有cookie身份验证的DownloadManager

我正在尝试使用DownloadManager从我的服务器解析带有JSESSIONID的cookie来获取一个zip文件.我正在使用HTTPCLIENT lib获取此JSESSIONID所有进程登录并设置变量JSESSIONID以供稍后在我的DownloadManager请求中使用.

我的下载请求:

    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(htmlUrlDownload));

    request.addRequestHeader("Cookie", "JSESSIONID=" + JSESSIONID);
    request.addRequestHeader(Constants.USER_AGENT, Constants.TARGET_REQUEST_HEADER);

    request.setDescription("Baixando " + metaDado.getType());
    request.setTitle("Download");
    request.allowScanningByMediaScanner();
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);

    String nameFile = offlineUuid + ".zip";

    fileName = nameFile;

    filePath = Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DOWNLOADS
            + File.separator + fileName;

    request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, nameFile);

    final DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);

    final long downloadId = manager.enqueue(request);
Run Code Online (Sandbox Code Playgroud)

问题是下载永远不会启动,C​​OLUMN_REASON会将代码返回给ERROR_UNHANDLED_HTTP_CODE

但是,如果我尝试使用Dropbox链接下载相同的文件而无需身份验证或使用httpclient,它的工作完美,我做错了什么?

如何获得更好的消息错误?

android download-manager android-download-manager

4
推荐指数
1
解决办法
3887
查看次数

iOS Swift | 核心数据按特定值获取

我有这个核心数据模型:

class Posts: NSManagedObject {
@NSManaged var title: String?
@NSManaged var author: String?
@NSManaged var url: String?
@NSManaged var isFavorite: NSNumber?
}
Run Code Online (Sandbox Code Playgroud)

我想在我的应用中添加收藏夹功能.

如何获取具有属性isFavorite == true的实体?到目前为止,我已设法获取所有数据,但我需要具有特定isFavorite值的数据.

core-data fetch ios swift

4
推荐指数
1
解决办法
3334
查看次数