อัปโหลดไฟล์ไปยัง Google ไดรฟ์จากแอปพลิเคชัน Java โดยที่ผู้ใช้ไม่ต้องโต้ตอบ

ฉันกำลังพัฒนาแอปพลิเคชัน Java โดยที่ฉันต้องการให้แอปพลิเคชันอัปโหลดไฟล์ไปยัง Google ไดรฟ์โดยที่ผู้ใช้ไม่ต้องดำเนินการใด ๆ และหลังจากบันทึกไฟล์แล้ว ฉันต้องการให้คนจริงดูไฟล์นั้นได้ คุณช่วยฉันบรรลุเป้าหมายข้างต้นได้ไหม

ปัญหาที่ฉันกำลังเผชิญ

การตรวจสอบสิทธิ์โดยใช้บัญชีของแอปพลิเคชัน: ในกรณีของบัญชีปกติ: รับรองความถูกต้องโดยใช้คีย์ API แต่ไม่สามารถแทรกไฟล์ได้ ในกรณีของบัญชีบริการ: ตรวจสอบสิทธิ์และแทรกไฟล์ลงในไดรฟ์ได้สำเร็จ แต่บุคคลจริงไม่สามารถดูได้ การใช้ไฟล์อัพโหลด: ฉันไม่แน่ใจว่าจะรับ auth_code ได้ที่ไหน และจะตั้งค่าเป็นส่วนหัวได้อย่างไร รหัสตัวอย่างจะเป็นประโยชน์

คงจะดีมากถ้าคุณสามารถช่วยฉันในเรื่องนี้


person user3912598    schedule 06.08.2014    source แหล่งที่มา


คำตอบ (1)


วิธีที่ง่ายที่สุดคือติดตั้งไคลเอนต์ Google Drive จากนั้นวางไฟล์ลงในไดเร็กทอรี Google Drive โดยตรง Google Drive จะอัปโหลดและเผยแพร่โดยอัตโนมัติ เสร็จแล้ว.

มิฉะนั้น คุณจะต้องใช้ Google Drive API เพื่อทำการอัปโหลดและ OAuth API เพื่อรับ auth_token วิธีการที่แน่นอนในการดำเนินการนั้นแตกต่างกันไปตามแพลตฟอร์ม สำหรับแอปพลิเคชัน Java ดั้งเดิมที่ทำงานบน Windows โค้ดจะมีลักษณะดังนี้:

  try {
    GoogleTokenResponse response = new GoogleAuthorizationCodeTokenRequest(
        transport,
        jsonFactory,
        clientSecrets.getWeb().getClientId(),
        clientSecrets.getWeb().getClientSecret(),
        code,
        clientSecrets.getWeb().getRedirectUris().get(0)).execute();
    return buildEmpty().setAccessToken(response.getAccessToken());
  } catch (IOException e) {
    new RuntimeException("An unknown problem occured while retrieving token");
  }

สำหรับข้อมูลเพิ่มเติม:

https://developers.google.com/drive/web/examples/java

person Jeff-Inventor ChromeOS    schedule 06.08.2014
comment
ขอบคุณสำหรับการตอบกลับ ข้อกำหนดของฉันคือการอัปโหลดไฟล์ไปยัง Google Drive ด้วยวิธีทางโปรแกรมโดยใช้ java เป็นกระบวนการเบื้องหลัง ดังนั้นจึงไม่สามารถเลือกตัวเลือกในการติดตั้งไคลเอ็นต์ Google Drive ได้ ในตัวอย่างโค้ดที่กล่าวมาข้างต้น ตัวแปร 'โค้ด' มีค่าอะไร ?? ไปเอาคุณค่ามาจากไหน?? - person user3912598; 06.08.2014
comment
ตรวจสอบลิงค์ มีโค้ดอีกค่อนข้างมาก ฉันเพิ่งอ้างถึงส่วนหลัก - person Jeff-Inventor ChromeOS; 06.08.2014
comment
ฉันลองใช้ REST ด้วย แต่ไม่แน่ใจว่าจะตั้งค่าส่วนหัวอย่างไรเนื่องจากฉันได้รับการตอบสนองเป็น 'สถานะตอบกลับที่ต้องการความยาว 411' สำหรับโค้ดต่อไปนี้ - person user3912598; 06.08.2014
comment
‹code› ClientConfig config = DefaultClientConfig ใหม่(); ลูกค้า ลูกค้า = Client.create (config); WebResource webService = client.resource(UriBuilder.fromUri(accounts.google.com/ o/oauth2/auth).build()); การตอบสนองของไคลเอ็นต์ = webService.header(response_type, token).header(client_id, CLIENT_ID).header(redirect_uri, REDIRECT_URI) header(ขอบเขต, โปรไฟล์).header(Content-Length, 0).post(ClientResponse.class);‹code› - person user3912598; 06.08.2014