13

在我的 android 应用程序中集成 Auth0 登录。对于这种集成,我正在关注这个 https://auth0.com/docs/libraries/lock-android

它以前工作正常,但现在我在点击谷歌时面临 403 不允许的用户。

当我在谷歌搜索时,我发现了这一点:谷歌自 4 月 20 日起出于安全目的决定阻止来自嵌入式网络视图的访问,这就是为什么 Auth0 使用谷歌登录失败的原因。

iOS家伙使用以下方法解决了同样的问题:

但在android中没有找到这个

如何解决这个问题。任何人对此有想法。

我的一段代码:

compile 'com.auth0.android:lock:2.+'

Auth0 auth0 = new Auth0(getString(R.string.auth0_client_id), getString(R.string.auth0_domain));
            mLock = Lock.newBuilder(auth0, mCallback)
                    //Add parameters to the builder
                    .closable(true)
                    .build(this);
            startActivity(mLock.newIntent(this));

private LockCallback callback = new AuthenticationCallback() {
       @Override
       public void onAuthentication(Credentials credentials) {
          //Authenticated
       }

       @Override
       public void onCanceled() {
          //User pressed back
       }

       @Override
       public void onError(LockException error) {
          //Exception occurred
       }
   };

显现:

<activity
  android:name="com.auth0.android.lock.LockActivity"
  android:label="@string/app_name"
  android:launchMode="singleTask"
  android:screenOrientation="portrait"
  android:theme="@style/MyLock.Theme">
    <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:host="quikdeal1.auth0.com"
        android:pathPrefix="/android/{YOUR_APP_PACKAGE_NAME}/callback"
        android:scheme="https" />
    </intent-filter>
</activity>

在此处输入图像描述

在此处输入图像描述

4

5 回答 5

11

正如你所说,谷歌决定阻止来自嵌入式WebViews 的访问。我也发生了同样的事情,我只是自己放置了用户代理。它看起来像这样:

public static final String USER_AGENT_FAKE = "Mozilla/5.0 (Linux; Android 4.1.1; Galaxy Nexus Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19";

@Override
protected void onCreate(Bundle savedInstanceState) {
    webView.getSettings().setUserAgentString(USER_AGENT_FAKE);
}
于 2017-05-15T07:07:48.953 回答
10

由于 Google 会阻止来自 a 的请求WebView,因此我们需要在发出请求之前自己设置一个用户代理。

使用其他答案中给出的硬编码假用户代理有一个缺点。Gmail 会向用户发送电子邮件,告知他们的帐户已从特定设备(不是他们的设备,可能会引起怀疑)登录。

使用系统的默认用户代理对我有用。

webView.getSettings().setUserAgentString(System.getProperty("http.agent"));
于 2019-09-13T06:49:24.533 回答
8

它对我有用:

private WebView mWebView;

public static final String USER_AGENT = "Mozilla/5.0 (Linux; Android 4.1.1; Galaxy Nexus Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mWebView.getSettings().setUserAgentString(USER_AGENT);
}
于 2018-03-07T07:09:43.967 回答
1

正如@OShiffer 所提到的,您需要添加一个虚假的用户代理,但现在它已经过时了,您必须改用新的。用这个

public static final String USER_AGENT = "Mozilla/5.0 (Linux; Android 10; SM-J105H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Mobile Safari/537.36";
于 2021-09-14T05:46:42.833 回答
1

谷歌阻止网络浏览使用其 OAuth。 参考链接

您需要通过本机代码进行 OAuth。或使用 Webview 的一些替代方案

于 2017-05-15T07:31:45.257 回答