2013-05-28 2 views
2

Android 앱에 Google Play 서비스 로그인을 구현하고 승인 코드를 백엔드 서버로 전달하는 데 문제가있어 서버가 액세스 토큰 코드를 교환하고 새로 고침 토큰.Android - Oauth2 - 앱용 서버 측 액세스

다음 내가 구글을 기반으로 간단한 안드로이드 응용 프로그램을 (작성 서비스 샘플 인증 응용 프로그램)과 GDATA를 사용하여 간단한 파이썬 코드 (사용하여 웹 서비스 CLIENT_ID 및 비밀 플레이) .

android app에서 처음으로 공간으로 구분 된 4 개의 스코프를 사용하고 토큰을 받았습니다. 파이썬 코드에서이 토큰을 사용하면 항상 { 'error_message': 'unauthorized_client'}가됩니다.

그런 다음 범위를이 값으로 변경하려고 시도했는데 잘못된 스코프 오류가 발생했습니다.

  • 으로 OAuth2 : 서버 : CLIENT_ID : 서버 - 클라이언트 ID : api_scope : 서버 : CLIENT_ID : 서버 - 클라이언트 ID : api_scope : scope1는
  • 관객을 scope2 scope1 scope2
  • 으로 OAuth2 : 청중 : 서버 : CLIENT_ID : 서버 - 클라이언트 ID : api_scope : 나는 웹 서버 클라이언트, 안드로이드 클라이언트의 CLIENT_ID, 다른 클라이언트를 사용 scope1 scope2
  • 서버 - 클라이언트 ID에 대한

누구든지이 문제를 나를 도울 수 바랍니다 .

고맙습니다 여기

파이썬 백엔드

당신은 인증 코드가 아닌 액세스 토큰을 검색하는
import gdata 
import gdata.gauth 


CLIENT_ID = 'client_id' 
CLIENT_SECRET = 'secret_id' 
SCOPES = ["https://www.google.com/m8/feeds", "https://mail.google.com", "https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email"] 
USER_AGENT = 'my-app' 

token = gdata.gauth.OAuth2Token(client_id=CLIENT_ID, client_secret=CLIENT_SECRET, scope=' '.join(SCOPES), user_agent=USER_AGENT) 

print "token ", token 
print token.generate_authorize_url(redirect_url='urn:ietf:wg:oauth:2.0:oob') 

try: 
    print token.get_access_token("token") 
except Exception, e: 
    print e 
    print e.__dict__ 
+0

내가 겪고있는 문제를 도와 줄 수 있습니까? – jurenovic

+0

Android 측에서 작성중인 전화의 세부 정보를 나열 할 수 있습니까? 두 가지 매우 다른 사물 인 "토큰"과 "인증 코드"를 얻고 있기 때문에 조금 혼란 스럽습니다. –

+0

죄송 합니다만 충분히 명확하지 않은 경우. 공백으로 구분 된 4 개의 문자열로 getAuthToken을 호출하면 토큰 (액세스 토큰이라고 가정)을 얻은 다음이 토큰을 사용하여 google에서 데이터 (연락처, 사용자 정보)를 얻을 수 있습니다. 이 토큰을 사용하여 새로 고침 토큰 및 액세스 토큰을 가져올 수 없습니다. Google Play 서비스를 사용하여 인증 코드를 가져 오려면 위에서 언급 한 범위 조합 (웹 서버의 클라이언트 ID 포함)을 사용하여 Google 서버에서 유효하지 않은 범위 응답을받습니다. 희망 사항은 내가 겪고있는 문제에 대해 충분히 분명했습니다. 가장 좋은 Jure – jurenovic

답변

1

코드입니다. 이들은 서로 다른 두 가지입니다.

인증 코드 can be used in your server side to get an access token. 그것들은 액세스 토큰이 아니며 그렇게 사용할 수 없습니다.

+0

안녕하세요 @ nacho,이 나를 위해 작동하는 데 사용되는, 불과 며칠 전 작동을 중지하고 이제이 오류 com.google.android.gms.auth을 throw합니다.GoogleAuthException : 알 수 없음 왜 그런가? https://gist.github.com/lawloretienne/7351151 – toobsco42

+0

일반적으로 범위를 검토해야합니다. http://stackoverflow.com/questions/17171956/unable-to-get-authorization-code-with-google-sign-in -for-android-invalid-scope –

+0

이 범위에 문제가 있습니까? https://gist.github.com/lawloretienne/7351151 – toobsco42