2017-12-07 18 views
7

Google 웹 사이트에서 공유하는 API와 이야기하는 Ionic 앱에서 Google Plus authentication plugin을 사용하는 데 문제가 있습니다. 구글 콘솔 모바일 앱 및 웹 사이트 용 이오닉 및 Google OAuth

나는 세 가지의 OAuth 2.0 클라이언트 ID, 예를 들어 ID가 부여

  • 안드로이드 클라이언트 (구글 서비스에 의해 만들어진 자동) 1.apps.google
  • 아이폰 OS 클라이언트가 (자동) 구글 서비스에 의해 생성 2.apps.google
  • 웹 애플리케이션 3.app.googles

모두 12 자리 숫자로 시작하고 "apps.googleusercontent.com"으로 끝납니다.

Google's documentation에 따르면 API 클라이언트 ID를 식별하는 범위 설정을 추가하여 동일한 API 프로젝트에 대해 모바일 앱과 웹 사이트를 인증 할 수 있어야합니다. _scope : 청중 : 서버 : CLIENT_ID : 나는 JWT를 얻을 수 있었다 3.apps.google_

this.googlePlus.login({ 
    'webClientId': '2.apps.google', 
    'scope': 'scope:audience:server:client_id:3.apps.google' 
}) 

구글에서 반환하지만 난 그것을 해독 할 때 나는 AUD을 찾을 때해야 값은 내 webClientId 설정과 일치 범위로부터의 가치이다. 지금까지 IC에서이 (이오니아 만든 것을 .gitignore 파일에 의해 제외되지 같이) 지속적으로 클라이언트 ID를 저장하는 유일한 장소를 알려 config.xml에

<plugin name="cordova-plugin-googleplus" spec="git+https://github.com/EddyVerbruggen/cordova-plugin-googleplus.git"> 
    <variable name="REVERSED_CLIENT_ID" value="google.apps.2" /> 
</plugin> 

및 package.json

"cordova-plugin-googleplus": { 
    "REVERSED_CLIENT_ID": "google.apps.2" 
    } 

만큼 그렇다면 내 모바일 앱이 웹 사이트에서 사용하는 것과 동일한 API를 사용하여 사용자를 인증 할 수 있도록 클라이언트 ID를 어디에 배치합니까?

+0

희망 사항 : https : //javebratt.com/ionic-google-login/ – Sampath

+0

튜토리얼의 첫 번째 부분은 클라이언트 ID를 생성하는 데 사용한 단계이지만 모바일 앱 광고 웹 사이트의 조합 – Craig

답변

2

솔루션은 차 것 같다 API의 클라이언트 ID에 nge.우리는 자신의 ID를 사용하고있는의와 함께, 단지 그것을 받아 들인 1234567890 부분 모두 웹 및 응용 프로그램 클라이언트를 사용하는 API를 변경 한 경우 지금까지 우리는, 그러나이

1234567890-abcdefghijklmnopqrstuvwxyz.apps.googleusercontent.com 

처럼, 전체 ID를 사용하여 봤는데 .

0

당신은 웹과 모바일 모두 https://github.com/EddyVerbruggen/cordova-plugin-googleplus를 사용할 필요가

단계 이온 통합 :

  • 추가 플러그인 & 초기화/당신이 app.module.ts에 플러그인 선언

$ ionic cordova plugin add cordova-plugin-googleplus --variable REVERSED_CLIENT_ID=myreversedclientid $ npm install --save @ionic-native/google-plus

참고 : 플러그인을 추가 할 때, 당신은 (내 기사 따르 https://codesundar.com/tutorials/create-reverse-client-id-for-google-login/) 반전 클라이언트 ID 전달되지 클라이언트 ID를 사용하는 데 필요한 페이지

  • 가져 오기 같은 플러그인을, 당신은 &이를 만들 사용하고 하여 Google+ 클래스의 객체는

import { GooglePlus } from '@ionic-native/google-plus'; 
 

 
constructor(private googlePlus: GooglePlus) { 
 

 
} 
 
login(){ 
 
    this.googlePlus.login({}) 
 
    .then(res => console.log(res)) 
 
    .catch(err => console.error(err)); 
 
}

+0

이것은 정확히 설정 한 것이며, 모바일 앱에 반환 된 JWT는 azp 및 aud 속성 모두에서 내 모바일 앱의 클라이언트 ID (역 ID가 아닌) 만 포함합니다. idToken을 받아들이도록 API를 얻을 수있는 유일한 방법은 aud가 clientID와 일치하면 웹과 다를 것입니다. 또한 모바일과 웹에 동일한 플러그인을 사용해야한다는 생각이 맘에 들지 않지만이 시스템은 내가 사용하는 언어 프레임 워크와 상관없이 작동 할 수 있어야합니다. – Craig

+0

클라이언트 ID를 this.googlePlus.login ({webClientId : 'YOUR_FORWARD_CLIENT_ID'})에 전달하면 idToken이 생성됩니다. 성공 콜백에서 idToken을 얻을 수 있습니다. 그러나 플러그인을 추가 할 때 "따옴표"가없는 역방향 클라이언트 ID를 사용해야합니다. – Sundaravel