2012-05-17 4 views
0

Привет, я хочу подключиться к сервисам google. Я - API-интерфейс клиента OAuth для подключения к нему. Th redirect uri Я использую is «http: // localhost»Как подключиться к службам google, не показывая браузер пользователю?

Но когда я выбираю «Разрешить доступ», то я хочу начать еще одно действие. Но как только я нажимаю «Разрешить доступ», то он открывает намерения Chooser со следующими параметрами: 1) Браузер 2) Название проекта

Он показывает это, потому что я начала свою деятельность с «View» Action и объявила целевую деятельность с категорией «BROWSABLE».

Но когда я удаляю категорию «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> 

Моя проблема заключается в том, что я не хочу, чтобы открыть намерения Chooser когда пользователь выбирает кнопку «Разрешить доступ» после аутентификации.

Пожалуйста, помогите.

ответ

0

Вместо этого:

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

Вы должны создать WebView и загрузить содержимое URL. Это то, как facebook или твиттер делают свою аутентификацию. Если вы решите использовать веб-просмотр, я рекомендую вам использовать WebViewClient, поскольку он позволит вам настроить множество настроек.

+0

Я могу использовать веб-просмотр, но когда я нажал кнопку «Разрешить доступ», он показывает, что экран, который говорит, что http: // localhost ..... не может быть загружен. Я хочу перенаправить пользователя на свою целевую активность, поэтому я использовал Intent. Теперь что мне делать? –

+0

Я сказал вам использовать веб-просмотр, чтобы вы могли обрабатывать ошибки, переопределяя метод и видя, что происходит. Похоже, это не обращение с обратным вызовом. Возможно, это помогает: http://stackoverflow.com/questions/2378800/android-webview-click-opens-default-browser – jsaye

+0

Единственное, что я сделал, это в том случае, если url получает ошибку. Я не использовал view.load (url). Спасибо за вашу помощь.. –

Смежные вопросы