【问题标题】:how to authenticate using webview in blackberry如何在黑莓中使用 webview 进行身份验证
【发布时间】:2014-02-26 06:40:50
【问题描述】:

我有一个需要使用 webview 显示的链接 我有一个链接,当在普通浏览器中打开时说 chrome 首先提示一个对话框输入用户名和密码,然后转到其中嵌入了视频的链接

我已经使用了如下所示的代码

import net.rim.device.api.browser.field2.*;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.container.*;

public class BrowserFieldDemo extends UiApplication
{
    public static void main(String[] args)
    {
        BrowserFieldDemo app = new BrowserFieldDemo();
        app.enterEventDispatcher();
    }

    public BrowserFieldDemo()
    {
        pushScreen(new BrowserFieldDemoScreen());
    }
}

class BrowserFieldDemoScreen extends MainScreen
{
    public BrowserFieldDemoScreen()
    {
        BrowserFieldConfig myBrowserFieldConfig = new BrowserFieldConfig();
        myBrowserFieldConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE,BrowserFieldConfig.NAVIGATION_MODE_POINTER);
        BrowserField browserField = new BrowserField(myBrowserFieldConfig);

        add(browserField);
        browserField.requestContent("http://www.blackberry.com");
    }
}

但这给出了身份验证错误 401,这可能是因为我直接点击链接而导致的......那么我如何添加一些代码行来验证现有代码中的用户

【问题讨论】:

    标签: authentication blackberry webview browserfield


    【解决方案1】:

    我建议您查看两个 BrowserField 交互示例。 BlackBerry Facebook SDK 中提供了一个,您可以在此处找到:

    Facebook SDK

    您可以在此处找到有关此 SDK 的博客:

    Facebook SDL Blog

    这不是 BlackBerry 编写的,但有点受支持。我用过它,但我个人觉得它比我需要的要复杂,所以我建议你查看 Twitter API ME SDK

    Twitter API ME

    这段代码创建了一个单独的 BrowserField 封闭类,在我看来,它使与 BrowserField 的交互变得更简单。

    回到您的问题,您如何在黑莓上实现这一点?抱歉,我不回答那个具体的问题。我正在做的是为您提供两个项目的链接,这些项目是为此而编写的,我建议您查看这些项目中包含的代码,然后自己弄清楚。

    在这个和其他论坛网站上有很多关于这两种 API 的论坛帖子。我建议您也搜索更多信息。

    BB 开发者网站也有很多关于 BrowserField 的有用文章,包括这篇:

    Create your first BrowserField

    更新

    既然您已经更新了您的问题,上述内容实际上并不相关。

    如果我理解正确的话,通常你必须输入用户名和密码才能进行身份验证,然后你才能观看视频。在您的情况下,您希望 BrowserField 直接转到视频链接。这不起作用,因为您没有输入登录信息。

    我对这个过程不是很熟悉,但我怀疑你是否真的可以这样做将取决于网站使用的身份验证方法。

    如果是标准的基本身份验证,那么我想你可能没问题。您可以在发出请求之前提供用户名和密码作为标头 - 请参阅 BrowserField addStandardRequestHeaders(...) 方法。抱歉,我无法为您提供为基本身份验证提供标头所需的格式,但我过去已经这样做了,我认为如果您搜索所需的标头,则它有据可查。从内存中,您需要对用户名进行 Base64 编码,后跟分号,然后是密码,并将其添加为“身份验证”标头。

    如果是其他身份验证,那么您需要找出哪些内容以及是否可以将信息添加到标题中以允许您绕过身份验证屏幕。

    如果您不熟悉 HTTP 标头,则需要进行一些研究以了解它们是什么以及如何使用它们。

    如果您无法在标头中提供身份验证信息,那么我认为您只需要要求用户登录 - 或将视频移至更多公共空间。

    进一步更新

    描述身份验证所需的标头的官方文档在这里:

    rfc2617

    关于基本身份验证的更易读的摘要,可以在这里找到:

    http://en.wikipedia.org/wiki/Basic_access_authentication

    您通常可以使用提供的 HttpProtocolConstants 类来设置常量 HTTP 值,例如,关键是:

    HttpProtocolConstants.HEADER_AUTHORIZATION

    内容将是

    “基本” + '你的 Base64 编码的 username_semicolon_password 字符'

    【讨论】:

    • 请检查我编辑的问题并让我知道一些相同的代码行。
    • ok ...现在..我使用了Hashtable userHash = new Hashtable(); userHash.put("admin", "****");并添加了一行 browserField.addStandardRequestHeaders(userHash, true);现在这应该可以正常工作了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多