2017-12-07 1 views
0

내 웹 사이트에 대한 Google 로그인 버튼을 article에 따라 통합하려고하지만 내 버튼이 웹 사이트에 표시되지 않습니다.자바 스크립트를 사용하여 Google 로그인 (웹 사이트)

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <script src="https://apis.google.com/js/platform.js" async defer></script> 
    <meta name="google-signin-client_id" content="MY_CLIENT_ID.apps.googleusercontent.com"> 
</head> 
<body> 
    <div class="g-signin2" data-onsuccess="onSignIn"></div> 
</body> 
</html> 
+0

이전과 비슷한 문제가 있습니다. 지침에 콘솔 사이드 바에서 자격 증명을 선택하라는 메시지가 표시되지만 거기에 없습니다. 편집 : 신경 쓰지 마라. 로그인이 권장되지 않습니다. –

답변

1

당신은 자신의 플랫폼에서 클라이언트 ID를 얻을 수 및 '콘텐츠'의 메타 태그에 배치해야 다음은 html 코드이다.

여기에 'MY_CLIENT_ID.apps.googleusercontent.com'이라는 자리 표시자가 있습니다. 클라이언트 ID를 받으려면 여기로 가야합니다 : https://developers.google.com/identity/sign-in/web/devconsole-project.

희망을 얻었습니다.

1

질문에 언급 된 튜토리얼과는 별도로 google.appengine.api 사용자 모듈을 통해 Google 사용자를 인증하는 방법을 보여줍니다. 모든 것은 JavaScript없이 할 수 있지만 게시 후 JS로 확인하도록 암호화 된 쿠키를 설정하여 사용자 ID를 얻는 것과 같은 웹 사이트 고유의 기능을 수행 할 수 있습니다 (문제가 있다면 알려주세요.)).

이 답변은 Python2 및 표준 환경에서 실행되는 Google App Engine 애플리케이션에 적용됩니다. 이 응용 프로그램은 또한 jinja2 템플릿을 사용합니다.

나는 구글 계정이있는 사용자를 인증 여기를 사용할 수있는 방명록 응용 프로그램을 다음입니다 :는 HTML의 경우

App Engine Guestbook - authenticating users

: 설정

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <script src="https://apis.google.com/js/platform.js" async defer></script> 
    <meta name="google-signin-client_id" content="MY_CLIENT_ID.apps.googleusercontent.com"> 
</head> 
<body> 
    <!-- Login Link --> 
    <!-- <div class="g-signin2" data-onsuccess="onSignIn"></div> --> 
    <a href="{{ g_url | safe}}">{{ g_url_txt }}</a> 
</body> 
</html> 

파이썬 백엔드 (main.py) :

import webapp2 

# Templating 
import jinja2 
# Authenticating users with google's users API 
from google.appengine.api import users 

# GAP's db model (only shown to see how user is checked if a returning user) 
from google.appengine.ext import db 

# For the templating to work you'll need to set up a 
# jinja environment linked to your own template directory, for example: 
jinja_env = jinja2.Environment(
    loader=jinja2.FileSystemLoader(os.path.dirname(__file__)), 
    extensions=['jinja2.ext.autoescape'], 
    autoescape=True) 

핸들러 (m ain.py) :

class Handler(webapp2.RequestHandler): 
    def write(self, *a, **kw): 
     self.response.out.write(*a, **kw) 
    def render_str(self, template, **params): 
     template = jinja_env.get_template(template) 
     return template.render(params) # parameters can also be a dictionary! 
    def render(self, template, **kw): 
     self.write(self.render_str(template, **kw)) 

class Login(Handler): 
    def get(self): 
     # If user chooses Google Sign-in 
     user = users.get_current_user() # Returns google user if signed-in 
     if user: # If google user exists... 
      nickname = user.nickname() 
      guser_id = user.user_id() # This is unique, email address may change. 
      email = user.email() 

      # Check if google user exists in database: 
      u = User.by_google_id(guser_id) 
      if u: 
       # Do something to give rights to user on your website 
       # e.g. via encrypted cookie. 
      else: 
       u = User(guser_id = guser_id, 
         email = email, 
         username = nickname) 
       u.put() 
      self.redirect("/welcome") 

     else: # Otherwise render the google href that will direct the user to the sign-in process. 
      g_url = users.create_login_url(self.request.uri) 
      g_url_txt = 'Login with Google' 
      self.render("login.html", g_url=g_url, g_url_txt=g_url_txt) 
      # After the user click on the link provided, sign-in will proceed, with succes, the 
      # redirect back here, with "self.request.uri" and the get() will run again, 
      # but this time with a google user. 

class Welcome(Blog): 
    def get(self): 
     g_url = users.create_logout_url("/") # Will redirect to Login page if clicked on. 
     g_url_txt = 'Logout' 
     self.render('welcome.html', g_url=g_url, g_url_txt=g_url_txt) 

class User(db.Model): 
    email = db.StringProperty(required = True) 
    guser_id = db.StringProperty(required = False) # googleUser 
    nickname = db.StringProperty(required = False) # googleUser 

    # @decorator: 
    # means that you can call the 
    # object's method without instantiating the object 
    @classmethod 
    def by_id(cls, uid): 
     # 'cls' refers to the User class 
     return cls.get_by_id(uid, parent = users_key()) 

    @classmethod 
    def by_google_id(cls, gid): 
     # 'cls' refers to the User class 
     return cls.all().filter('guser_id =', gid).get() 



app = webapp2.WSGIApplication([('/', Login), 
           ('/welcome', Welcome) 
           ], 
           debug = True) 

나는 이것이 당신이나 다른 사람에게 도움이되기를 바랍니다, 나는 아직 사용할 수없는 솔루션이나 튜토리얼 위에서 실제로 사용되지 않습니다 여부에 대한 명확한 설명과이를 일 동안 갇혀 있었다.

관련 문제