2013-03-28 4 views
2

이상합니다. 코드는 Chromium에서 잘 작동합니다. 승인 후 (oauth2) Google 클라우드 엔드 포인트를 방문하여 정보를 다운로드하십시오. 그러나 일단 js로 변환되고 Chrome에서 열리면 승인 후 클라우드 엔드 포인트를 방문하지 않습니다 (Google 앱 엔진 로그에서 확인). IE9에서 열리면 승인 페이지조차 나타나지 않습니다. 도움을 주시면 감사하겠습니다.Dart2J가 생성 한 코드가 Google 클라우드 엔드 포인트에 액세스하지 않습니다.

소스 코드 : example.html

<!DOCTYPE html> 

<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>example</title> 
    <link rel="stylesheet" href="example.css"> 
    </head> 
    <body> 
    <h1>example</h1> 
<div id="container"> 
     <div id="title"> 
      <p>Hello!</p>  
      </div>  
      <div id="navigation"> 
       <p> first </p>    
      </div> 
     <div id="content"> 
       <p> Content </p>    
     </div> 
    <button id="login">Login</button> 
</div> 
    <script type="application/dart" src="example.dart"></script> 
    <script src="packages/browser/dart.js"></script> 
    </body> 
</html> 

example.css

#navigation { 

    float:left; 
    color: #333; 
    width: 200px; 
    border: 1px solid #ccc; 
    background-color: #fff; 
    min-height: 20px; 
    margin-bottom: 5px; 
    box-sizing: border-box; 
    padding: 5px; 

} 
#content { 
margin-left: 200px; 
    width: 600px; 
    height: 600px; 

    border: 1px solid #ccc; 
    background-color: #fff; 
} 

example.dart

import 'dart:html'; 
import 'package:web_ui/web_ui.dart'; 
import "packages/dart_terminalendpoint_v1_api_client/lib/terminalendpoint_v1_api_browser.dart" as gdglib; 
import "package:google_plus_v1_api/plus_v1_api_browser.dart" as pluslib; 
import "package:google_oauth2_client/google_oauth2_browser.dart"; 
final CLIENT_ID = "----------.apps.googleusercontent.com"; 
final SCOPES = ["https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/plus.me"]; 

void main() { 
    var auth = new GoogleOAuth2(CLIENT_ID, SCOPES); 
    var gdg = new gdglib.Terminalendpoint(auth); 
    var plus = new pluslib.Plus(auth);  
    var navigation = query("#navigation"); 
    var content = query("#content"); 
    var loginButton = query("#login"); 
    pluslib.Person me; 

    void fetch() { 
    gdg.makeAuthRequests=true; 
    gdg.terminals.listTerminal().then((l) { 
     navigation.text = ""; 
     if (l.items != null) { 
     l.items.forEach((e) { 
      var p = new ParagraphElement(); 
      p.text = " ${e.emailAddress}: ${e.location}"; 
      navigation.append(p); 
     }); 
     } 
    }); 
    } 
    loginButton.onClick.listen((Event e) { 
    fetch(); 
}); 

}

+1

당신이 .. 최소한으로 코드를 분리하려고 어쩌면이 현재 양식이 질문에 .. 여기에 몇 가지 조각을 가지고 좀 더 구체적인 답변을 얻을 수 있습니다 .. 조금 불분명 매우 모호합니다 .. – Lipis

+0

감사. 소스 코드도 첨부했습니다. –

답변

1

안녕 빈센트가 최신 버전으로이 문제를 해결 했습니까? http://pub.dartlang.org/packages/discovery_api_client_generator

+0

은 최신 클라이언트 [github] (https://github.com/dart-gde/discovery_api_dart_client_generator)를 다운로드하여 엔드 포인트 클라이언트 lib를 생성했습니다. 문제는 여전히 존재합니다. Chromium은 제대로 작동하지만 Chrome26 또는 IE9에서 생성 된 js는 Google 앱 엔진을 방문하지 않습니다. 어떠한 제안? 감사. –

1

나는 discovery_api_client_generator를 사용했으며 훌륭하게 작동합니다. 그러나 기본적으로 라이브러리의 변수는 false로 설정되어 있으므로 외부에서 변경할 수 없기 때문에 인증되지 않도록 설정됩니다. client_base.dart 파일에서 생성 된 라이브러리를 수동으로 편집하면 아래 browser_client.dart의 코드가 인증을 호출하는 '올바른'작업을 수행합니다.

if (makeAuthRequests && auth != null) { 
    auth.authenticate(request).then((request) => request.send(body)); 
} else { 
    request.send(body); 
} 
관련 문제