2012-07-13 6 views
10

OAuth 자격증 명을 요청할 때 access_type을 오프라인 또는 온라인으로 지정할 수 있습니다.access_type = Online이 적절한시기는 언제입니까? : OAuth2 - Google API

온라인 액세스 유형을 선택하면 사용자가 로그인 할 때마다 내 앱에 대한 액세스를 승인하게됩니다. 왜 그런가요? 사용자가 이미 내 앱을 승인하지 않았습니까?

업데이트 # 1 :

내 approval_prompt이 '자동'으로 설정해야합니다.
쿠키를 삭제하지 않고 Google에서 로그 아웃하면 다시 나에게 메시지가 표시되지 않습니다. 그러나 쿠키를 삭제하면 승인 화면이 다시 나타납니다.

업데이트 # 2 :

그것은 OAuth를 놀이터를 통해 잘 작동합니다. 관련 코드는 도우미 메서드 호출의 OAuth URL을

def build_auth_uri 
    return @client.authorization.authorization_uri(
    :access_type => :online, 
    :approval_prompt => :auto 
    ).to_s 
end 

를 생성하는

도우미 방법을 니펫 : https://developers.google.com/accounts/docs/OAuth2WebServer

업데이트 # 3 웹 서버 응용 프로그램에 대한 OAuth는 2.0을 사용하여 http://code.google.com/oauthplayground/

보기

은 웹 페이지

https://accounts.google.com/o/oauth2/auth?access_type=online&approval_prompt=auto&redirect_uri=http://localhost:3000/gclient/gcallback&response_type=code 
+0

저도 정확한 문제에 직면 해 있습니다. 아래 요청 URL을 찾으십시오 : 'https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/userinfo.email+https://www.googleapis.com /auth/userinfo.profile&state=profile&redirect_uri=http : // localhost/oacallback & response_type = code & client_id = 123.apps.googleusercontent.com & approval_prompt = auto & access_type = online' –

+1

@jayyov 문제는 여전히 저에게 이상합니다. localhost 대 hosted 웹 사이트에서도이 작업을 수행하는 것과 차이가있는 것으로 보입니다. –

+0

이 문제에 대한 해결책이 있었습니까? 나는 같은 문제를보고있다. 또한 앱을 승인 한 횟수가 내 앱 관리 페이지에 표시되지 않는다고도 알았습니다. – mwielbut

답변

13

이 이러한 흐름에서 활동하기 시작하는 다른 하나 개의 매개 변수가 나는 당신이 그것으로 실행하는 의심에 OAuth를 URL을 생성. approval_prompt 매개 변수입니다.

access_type=online의 경우 approval_prompt의 값을 지정할 수도 있습니다. approval_prompt=force으로 설정하면 사용자에게 이미 권한이 부여 된 경우에도 항상 메시지가 표시됩니다. access_type=offlineapproval_promptapproval_prompt=force로 설정할 수 있습니다,하지만 당신은 또한 당신의 액세스 토큰을 갱신하는 데 사용할 수있는 refresh_token 제공하고 이러한 제한을 보완하는 한편

.

access_type=online이 열려있는 URL을 확인하십시오. approval_prompt=auto으로 설정하십시오. 권한 부여 화면은 처음에만 나타나야합니다.

+0

감사합니다. Jenny. 나는 approval_prompt를 auto로 설정했다고 언급 했어야했다. 그랜트 화면이 나옵니다. 쿠키에 의존 하는가?로그인을 다시 테스트하기 위해 쿠키를 삭제합니다. 나는 OAuth 서버가 사용자의 승인을 저장한다고 가정했다. 쿠키를 모두 지우지 않고 Google에서 로그 아웃하면 권한 부여 화면이 표시되지 않습니다. –

+0

가능성이 있습니다. 쿠키를 모두 지우면 Google에서 로그 아웃되며 인증을 위해 다시 로그인해야합니다. 오작동하는 코드의 예가 있습니까? 나는보고 싶다 :) – mimming

+0

Thx Jenny! 질문에 관련 코드 스 니펫을 추가했습니다. 더 필요한 게 있니? 쿠키와 관련하여 쿠키가 삭제되면 사용자는 다시 액세스 권한을 부여 받아야합니까? 그들이 다시 인증해야하는지 이해할 수 있습니다. –

관련 문제