2013-05-07 62 views
0

我試圖從執行的例子驗證:如何融合表通過OAuth V2

https://code.google.com/p/google-api-java-client/source/browse?repo=samples#hg%2Ffusiontables-cmdline-sample

基本上是關於如何驗證和使用融合API的例子。我無法使它工作...在這一點上:

// authorize 
return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user"); 

瀏覽器顯示「錯誤:redirect_uri_mismatch」。

這裏的奇怪之處在於,使用Oauth進行身份驗證的其他示例(谷歌plus API和雲存儲之一)不使用與此相同的方法,基本上包含使用可以下載的JSON文件一旦通過API控制檯創建了服務帳戶。

其實,有一個使用的方法從這個例子的一個問題:

Google Fusion Tables 400 invalid_grant

我的主要問題is..which是正確的?我不知道這個

第二個是......這個例子在JSON文件中尋找一個叫做client-secret的項目,我沒有這個項目。我不認爲這是使代碼不可行的原因,但我不知道這個客戶的祕密啄是什麼...

如何進行的將是一些見解十分讚賞

謝謝! Alex

回答

0

好吧,如果有人和我一樣處境相同......我會發布我發現的解決方案。我做的基本上是修改了這個例子(特別感謝Christian Junk的工作),所以當涉及到身份驗證時,它看起來更像其他示例(存儲和加號)。

HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); 

    // check for valid setup 
    if (SERVICE_ACCOUNT_EMAIL.startsWith("Enter ")) { 
     System.err.println(SERVICE_ACCOUNT_EMAIL); 
     System.exit(1); 
    } 
    String p12Content = Files.readFirstLine(new File("key.p12"), Charset.defaultCharset()); 
    if (p12Content.startsWith("Please")) { 
     System.err.println(p12Content); 
     System.exit(1); 
    } 
    // service account credential (uncomment setServiceAccountUser for domain-wide delegation) 
    GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT) 
     .setJsonFactory(JSON_FACTORY) 
     .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) 
     .setServiceAccountScopes(FusiontablesScopes.FUSIONTABLES) 
     .setServiceAccountPrivateKeyFromP12File(new File("key.p12")) 
     // .setServiceAccountUser("[email protected]") 
     .build(); 


    // set up global FusionTables instance 
    fusiontables = new Fusiontables.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential).setApplicationName(APPLICATION_NAME).build(); 

這不同於原來的例子的方法,但它爲我工作,我可以列出表格,創建新的,填充它們並將其刪除。

我只是希望這些例子在Oauth和Fusion表格文檔頁面更容易找到,這會爲我節省一些寶貴的時間:)