0

嗨,我想连接到谷歌服务。我是连接到它的 OAuth 客户端 API。我使用的重定向 uri 是“http://localhost”

但是当我选择“允许访问”时,我想开始另一个活动。但是只要我按下“允许访问”,它就会打开带有以下选项的意图选择器:1)浏览器 2)项目名称

它显示了这一点,因为我已经使用“查看”操作启动了活动,并使用“浏览”类别声明了目标活动。

但是当我删除“BROWSABLE”类别时,它会直接显示浏览器,因此页面不会加载。

我正在使用的代码是:

String authenticationUrl= "https://accounts.google.com/o/oauth2/auth?   
scope=https://www.googleapis.com/"+
        "auth/userinfo.email+https://www.googleapis.com/auth/userinfo."+
            "profile";
    OAuthClientRequest request = null;
    try {
        request = OAuthClientRequest
               .authorizationLocation(authenticationUrl)
               .setClientId(CLIENT_ID)
               .setRedirectURI(REDIRECT_URI)
                .buildQueryMessage();
    } catch (OAuthSystemException e) {
        e.printStackTrace();
    }
    Intent intent = new Intent(Intent.ACTION_VIEW,
            Uri.parse(request.getLocationUri() + "&response_type=code"));
    startActivity(intent);

在清单中,我已经像这样声明了目标活动:

  <activity android:name=".TestActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT" />
                        <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http" android:host="localhost"/>
        </intent-filter>
    </activity>

我的问题是,当用户在获得身份验证后选择“允许访问”按钮时,我不想打开意图选择器。

请帮忙。

4

1 回答 1

0

而不是使用这个:

Intent intent = new Intent(Intent.ACTION_VIEW,
            Uri.parse(request.getLocationUri() + "&response_type=code"));

您应该创建一个 webview 并加载 url 的内容。这就是 facebook 或 twitter 进行身份验证的方式。如果您选择使用 webview,我建议您使用 WebViewClient,因为它可以让您进行大量自定义。

于 2012-05-17T06:59:04.217 回答