Opening local applications from browsers
The system facilitates seamless integration of browser-based access with local applications for cloud documents, addressing synchronization and editing limitations by enabling authorized access and efficient file operations across devices.
Patent Information
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2015-11-03
- Publication Date
- 2026-04-30
AI Technical Summary
Existing cloud-based document access methods lack the ability to seamlessly integrate browser-based access with local application capabilities, leading to cumbersome file synchronization and editing limitations, especially in environments with network connectivity issues.
A system and method enabling communication between a browser, a sync client, and local applications, allowing users to open local files using browser extensions and intermediary proxies, which authenticate and synchronize documents across devices, ensuring authorized access and efficient file operations.
Enables enhanced file editing capabilities through local applications while leveraging cloud storage, providing synchronized access and improved user experience even in network-limited conditions.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
Cross-reference to related registrations
[0001] This application claims priority over the preliminary US application no. 62 / 075.825, filed on November 5, 2014, and the US application no. 14 / 547.086, filed on November 18, 2014, the contents of both of which are incorporated herein in full by reference. Field of invention
[0002] In general, this disclosure refers to the use of a browser to open a local file with a local application. background
[0003] Cloud-based document storage systems offer users many advantages, including access to files from multiple devices, collaboration between multiple users, and automatic file synchronization between a local device and a server. Files in the cloud are typically accessed using one of two methods. In one method, files are stored in the local device's file system and synchronized with a server. In the other method, the files are accessed locally using the local device's operating system and locally installed applications. However, the only access restrictions are those associated with the operating system. Furthermore, the files can only be accessed using the local device.
[0004] Another method uses a browser to access files in the cloud. The browser-based approach offers the advantage of flexibility, as files can be accessed from any device with browser capabilities. However, browser-based editing applications lack certain capabilities compared to locally installed applications. Furthermore, browser-based applications depend on network connectivity and high bandwidth to function effectively. For example, a file is accessed via a browser and manually downloaded to a local device. The user then has to manually navigate the local device's file system to open the file using a locally installed application. This process is not only cumbersome for the user but also fails to synchronize the edited file with the server.
[0005] US 2013 / 0346450 A1 discloses a cloud storage system for remote access to a file associated with the cloud storage system. In response to a request to access the file, the cloud storage system identifies applications available to the request generator that are suitable for accessing the file. These applications may include both online web-based applications and applications installed on a device used by the user to access the file. The cloud storage system determines the application type of an identified application and grants file access to the identified application based on that application type.
[0006] US 2013 / 0226876 A1 discloses a system and a method for receiving a file in a cloud-based storage system and storing the file in the file structure of the cloud-based storage system. Upon receipt, the file, its name, and its location in the cloud storage are associated with a unique identifier created for the file. When the file is made available to at least one user client, the user client can store it in a user-defined structure that differs from the structure of the cloud-based storage system. Due to the unique identifier associated with the file and the cloud-based storage location, locally stored files can continue to be synchronized with the files stored in the cloud storage.
[0007] US 7,251,827 B1 discloses an inline authentication method that allows a user to log in to a first server based on the authentication method of a second server. The method uses, among other things, a one-time key (nonce) and a list of allowed URLs to prevent spoofing and replay attacks. Additionally, the method allows the user to see error messages that occur during the authentication process in the same way as on the first server, while using the authentication process of the second server. A method for dual or distributed authentication is also disclosed, in which the user only needs to enter the login ID and password once, and the two authentication processes do not need to exchange the user's password. Summary
[0008] The invention is defined by the independent claims. Dependent claims specify embodiments of the invention.
[0009] Accordingly, systems and procedures for enabling communication between a browser, a sync client, and a local application are described here. In certain aspects, the systems and procedures described here relate to the use of a browser to open local files with local applications. A request to open a document is received from a first application on a local device. This document has a document identifier and is associated with a first file stored on a server. The request may include the document identifier and a user ID. It may be determined that a second file, stored on the local device, is associated with the document identifier, and it may be determined that a user to whom the user ID is assigned is authorized to access the second file.Based on this determination, a list can be sent to the first application, containing one or more applications located on the local device that can open the second file. The first application can then receive a notification of a second application selected from the list. A message can then be sent to open the second file using the second application.
[0010] A sync client can perform one or more of the read, determine, and send steps described above. The sync client can communicate with an intermediary proxy, which sends the request to the sync client, receives the list from the sync client, and sends the specification back to the sync client. The intermediary proxy can modify the request, the list, and / or the specification based on formatting requirements for the sync client and the initial application.
[0011] A content file can store a list of local application identifiers corresponding to multiple local applications installed on the local device and registered with the sync client. The message to open the second file can include an application identifier associated with that second application. It can be determined whether the application identifier is contained in the content file.
[0012] Determining whether the user is authorized to access the second file can involve one or more of the following steps. A first hash can be received, calculated based on at least one pre-shared key. Using this first hash and the at least one pre-shared key, a second hash can be calculated. The first hash can be compared to the second hash. If the first hash matches the second hash, the user can be authorized to access the second file.
[0013] The first and second hashes can each be calculated, at least partially, based on a one-time key. The request and / or list and / or specification can contain standard input or output data streams associated with the first application. The second file can be created from a copy of the first file. The first application can be a browser or a browser extension. The user can submit one or more requests via the browser. The list can only be sent to the first application if the second file is synchronized with the first file.
[0014] On a local device, a request can be received from a user to open a document that has a document identifier and is associated with a first file stored on a server. The request can include the document identifier and a user ID associated with the user. The requested document identifier and user ID can be sent to a first application on the local device. The first application can receive a list containing one or more applications located on the local device. The user can receive a specification of a second application, selected from the list. A message can be sent to the first application, containing the file identifier and an identifier associated with the second application.
[0015] The receiving and / or sending described in the paragraph above can be performed by a third-party application. This third-party application can be a browser or a browser extension. The third-party application can communicate with an intermediary proxy, which sends the request to the third-party application, receives the list from the third-party application, and sends the specification back to the third-party application. The intermediary proxy can modify the request and / or the list and / or the specification based on formatting requirements for both the third-party application and the first-party application. Brief description of the drawings Fig. Figure 1 is a block diagram of a cloud computing service in accordance with an illustrative implementation; Fig. Figure 2 is a block diagram of a local device communicating with a server over a network in accordance with an illustrative implementation; Fig. Figure 3 is a block diagram of a local device communicating with a network in accordance with an illustrative implementation; Fig. Figure 4 shows a user interface of a cloud computing service in accordance with an illustrative implementation; Fig. Figure 5 is a flowchart of a procedure executed by a browser to communicate with a local application to open a local file in accordance with an illustrative implementation; Fig. 6 is a flowchart of a procedure executed by a browser and a sync client to determine that they both present the same user account, in accordance with an illustrative implementation; and Fig. Figure 7 is a block diagram of a computer device for performing any of the processes described herein in accordance with an illustrative implementation. Detailed description
[0016] To provide a complete understanding of the disclosure, certain illustrative examples, including a system and a method for opening local browser applications, are now described. However, the average person skilled in the art understands that the systems and methods described herein can be adapted and modified as needed for the application under discussion, and that the systems and methods described herein can be used in other suitable applications, and that such other additions and modifications do not alter their scope of protection. In general, the computer systems described herein may comprise one or more components that include one or more processing devices, such as a computer, a microprocessor, a logic device, or other device or processor.which is configured with hardware, firmware and software to perform one or more of the computer-based procedures described herein.
[0017] Opening local applications from browsers is useful because local applications can offer enhanced or different file editing capabilities compared to browser-based applications delivered by servers. Opening local applications from browsers allows you to realize the advantages of using local applications while also benefiting from storing documents in cloud services.
[0018] Fig. Figure 1 shows a client-server system 100 that includes a cloud computing service 101 and a number of client devices 102a-102d (generally referred to as client device 102). The cloud computing service 101 provides cloud computing services to a set of client devices 102. Specifically, the cloud computing service 101 may contain one or more servers that store a number of files accessible by client devices 102a-102d, such as an example collaboration spreadsheet 103. Users of the client devices 102 can create, edit, copy, share, and delete files stored in the cloud computing service 101. For example, each client device 102 can use a web browser to access the spreadsheet 103 in the cloud computing service 101 simultaneously.Cloud computing service 101 provides each client device 102 with a local copy of spreadsheet 103, which users on the client devices 102 can then view and edit. Cloud computing service 101 can synchronize the local copies of spreadsheet 103 with each other and with a copy of spreadsheet 103 stored on a server within cloud computing service 101. For example, edits, which can be referred to here as mutations, made by client device 102a are automatically sent to cloud computing service 101 and then to the other client devices 102b, 102c, and 102d. In this way, mutations made by one employee can be immediately seen by other employees. As used here, a file contains a set of digitally encoded bits stored on a data storage medium.A cloud file is a file stored on a server and accessible over a network. A local file is a file stored on a user's local device. A client device is a local device that communicates with a server in a client-server relationship. As used here, a document is part of a cloud computing service and can have multiple associated files. For example, a cloud file can be a copy of a document stored on a server, and a local file can be a copy of the same document stored on a local device. In general, multiple copies of the same document can be identical, but they may differ if changes made by one employee have not yet been sent to other employees.This situation can occur if a network connection is slow or intermittent. If the copies are stored on different types of devices, such as devices with different operating systems, multiple copies of the same document may also differ slightly. In this case, different copies may have slightly different metadata or be encoded differently. For example, one copy may be encoded in a big-endian format, and another copy may be encoded in a little-endian format. These format differences can exist across multiple files that are copies of the same document, as long as the substance of the information displayed to the user across the copies is the same.
[0019] The client devices 102 can include any combination of desktop computers, laptop computers, tablets, smartphones, mobile electronic devices, or any other device that can be connected to the cloud computing service 101 via a network. Only four client devices 102 are shown in System 100, but it is understood that any number of client devices 102 of any type can be configured to communicate with the cloud computing service 101. The cloud computing service 101 and the client devices 102 of System 100 can be connected via a remote network such as the internet.The network connection can be provided via a local area network, a wide area network, Ethernet, a fiber optic network, a wireless network, a cellular network, an interactive television network, a telephone network, a wireless data transmission system, a two-way cable system, a custom private or public computer network, an interactive kiosk network, a direct connection, a satellite network, or any other wired or wireless connection.
[0020] Fig. Figure 2 represents an exemplary system 200 of a local device 202 communicating with a server 206 over a network 204. The system 200 can be used to open cloud-based files with local applications via a browser. For clarity of presentation, in Fig. Figure 2 shows only one local device 202 and one server 206, but generally any number of local devices 202 can communicate with any number of servers 206 via the network 204. The local device 202 can equivalently be one of the devices 202 and 206 that are related to the network 204. Fig. The client devices shown and described in section 1 (102) and the server (206) can be in a cloud computing service such as the one described in Fig. The cloud computing service shown in section 101 will be included. As shown in Fig. As shown in Figure 2, server 206 contains a database 216 that stores cloud files 218a, 218b, ..., 218m (collectively, cloud files 218). Each cloud file 218 can be associated with a different document in the cloud computing service 101. For example, cloud files 218a and 218b can each be associated with different word processing documents, while cloud files 218m can be associated with a spreadsheet document, such as the spreadsheet document 103 stored in the cloud computing service 101.
[0021] The local device 202 contains a database 208, a browser 212, and a set of local applications 214a, 214b, ..., 214k (generally local application 214). The database 208 stores local files 210a, 210b, ..., 210n (generally local files 210). The local files 210 may or may not be associated with documents in a cloud computing service 101. If the local files 210 are associated with documents stored in the cloud computing service 101, the association of a local file with a cloud computing service 101 may involve synchronizing the local file with a file stored on a server, such as one of the cloud files 218.
[0022] The local applications 214 can be software applications that perform one or more operations on files. Examples of operations that can be performed by any of the local applications 214 include opening, viewing, editing, receiving edits to, and saving. The browser 212 can be configured to communicate with the server 206 through one or more intermediary components or software applications, which may or may not include the local applications 214. In particular, the browser 212 can display a user interface so that a user can interact with documents in the cloud computing service 101. In one example, the browser 212 receives user input to request a document stored in the cloud computing service 101 and to perform operations on the document.The requested document, stored in the cloud computing service 102, can be synchronized with one of the local files 210 stored on the local device 202. Upon receiving user input, the browser 212 communicates with one of the local applications 214 to request that the local application 214 perform operations on the corresponding local file 210. In this way, by providing file synchronization between the local device 202 and the remote server 206, the system 200 enables a user to request, via a browser 212, that operations be performed on local files 210 using local applications 214.
[0023] Fig. Figure 3 shows an exemplary system 300 containing a local device 302 that communicates with a network 304. The local device 302 can be similar to the one described in relation to Fig. 2 local device 202 shown and described, but Fig. Figure 3 shows a more detailed view of the components within the local device 302. Specifically, the local device 302 contains a local database 308, local files 310, a browser 312, local applications 314, a sync client 320, a proxy process 322, a browser extension 324, a network interface 326, and a processor 328. The processor 328 executes applications, functions, procedures, and processes on the local device 302, such as the applications 314, the sync client 320, the proxy process 322, the browser extension 324, and the browser 312. The network 304, the database 308, the local files 310, the browser 312 and the applications 314 can perform similar functions in this order as the network 204, the database 208, the local files 210, the browser 212 and the applications 214.Network interface 326 acts as an intermediary in the communication between the local device 302 and remote resources that can be accessed via network 304. In particular, the local applications 314 and / or the local files 310 on the local device 302 communicate with a server (such as server 206) via network 304.
[0024] As in Fig. As shown in Figure 3, the browser 312 communicates with local applications 314 via the browser extension 324, the proxy process 322, and the sync client 320. As shown in Figure 320. Fig. As shown in Figure 3, the local device 302 contains only a browser extension 324, a proxy process 322, and a sync client 320. However, in general, any number of these components can be contained in the local device 302 and can perform any of the functions described here. In one example, the browser extension 324 performs actions in response to user requests received by the browser 312. Such user requests may include requests to perform operations on documents in a cloud service, such as the cloud computing service 101. The browser extension 324 may contain JavaScript code or code of a similar language that can call objects, functions, methods, subroutines, processes, or operating system commands.The browser extension 324 can be installed automatically when the sync client 320 is installed on the local device 302, or when the browser extension 324 is installed. As used here, "browser" refers to a software application that can read and display information, a browser extension, or any suitable combination thereof. Although the browser 312 and the browser extension 324 are in . Fig. Figure 3 shows two separate elements, and it is understood that browser 312 can contain browser extension 324, and that any of the functions described here as being performed by browser extension 324 can alternatively or additionally be performed by browser 312. Similarly, any of the functions described here as being performed by browser 212 can instead be performed by browser extension 324.
[0025] In some examples, the communication between any of the browser 312, the browser extension 324, the sync client 320, and the local application 314 involves interprocess communication (IPC). In this case, the proxy process 322 enables communication between the browser extension 324 and the sync client 320 by forwarding combinations received from one (e.g., the browser extension 324 or the sync client 320) to the other (e.g., the sync client 320 or the browser extension 324). The proxy process 322 is a separate executable file, and multiple instances of the proxy process 322 can be open or running concurrently. In some examples, a new instance of the proxy process 322 is started when JAVASCRIPT in the browser extension 324 calls an initiation function in response to receiving a user request to open a document with a local application.In some examples, an instance of proxy process 322 may be destroyed or terminated by browser 312, browser extension 324, JavaScript within browser extension 324, or garbage collection. Garbage collection here refers to routine memory maintenance performed by operating systems, programs, processes, and applications. Occasionally, proxy process 322 may modify communication before forwarding the modified communication. In one example, proxy process 322 modifies communication by performing one or more of the following: changing the format of the communication, adding data or elements to the communication, or removing data or elements from the communication. Communication with proxy process 322 may include a standard input stream (stdin), a standard output stream (stdout), and a standard error stream (stderr).stdin, stdout, and stderr streams are byte streams of data between an application and its environment. While by default the stdin stream accepts keyboard input and the stdout stream is displayed on a monitor, any of the three streams can be redirected. For example, the stdin stream of browser extension 324 can be redirected to proxy process 322, so that browser extension 324 receives input from proxy process 322. The stdout and stderr streams of browser extension 324 can also be redirected to proxy process 322, so that browser extension 324 outputs directly to proxy process 322. Similarly, any of the stdin, stdout, and stderr streams of sync client 320 can be redirected to proxy process 322. In some examples, stdin, stdout, and stderr communication takes place in the format of JAVASCRIPT OBJECT NOTATION strings (JSON strings) with prefixed length bytes or words.In these examples, the browser extension can now send serializable JavaScript objects to the proxy process 322 and receive objects back in a similar format. In another example, communication with the proxy process 322 may involve the use of one or more named pipes. In another example, communication with the proxy process 322 may involve message passing. In yet another example, cryptographic authentication may be required before communication between the browser 312, the browser extension 324, and the sync client 320. In yet another example, communication between the browser 312, the browser extension 324, the sync client 320, and the local applications 314 may involve other forms of application-to-application communication. To enable this communication, the browser extension 324 may be installed when a user logs in to the sync client 320 or authenticates in some other way.The browser 312 can use the proxy process 322 to pass messages between the browser extension 324 and the sync client 320 to communicate with local applications 314 in order to work on local files 310.
[0026] In some examples, a wildcard domain on network 304 is used for communication between browser 312, browser extension 324, and sync client 320. In one example, the wildcard domain can be registered with a domain name system that references a domain such as localhost (127.0.0.1), which is typically associated with a local device 302. In this case, local device 302 can contain a certificate that validates Secure Hypertext Transfer Protocol (HTTPS) requests. In this case, proxy process 322 cannot be used.
[0027] In some examples, a full-duplex communication protocol, such as WebSocket, is used for communication between browser 312 and sync client 320. In some examples, browser extension 324 cannot be used. Proxy processes 322 can act as intermediary proxies between browser 312 and sync client 320. Browser extension 324 can expose a JSON protocol endpoint via a messaging application programming interface (Messaging API). In this case, a web page displayed in browser 312 can send messages to and receive messages from proxy process 322, which forwards these messages to and from sync client 320. Browser 312 can connect to proxy process 322, set a port object, and send a notification to proxy process 322. Browser 312 can establish a WebSocket connection and assign the WebSocket connection to the port object.This handles communication between browser 312 and localhost (the loopback network interface of local device 302) via the WebSocket connection. In this case, incoming messages at the port can be serialized and forwarded to the WebSocket. Incoming messages for the WebSocket can be converted into JSON strings and sent back to the web page. By using the proxy process 322 to send content between the web page displayed in browser 312 and the insecure localhost WebSocket connection, mixed content warnings, which can otherwise occur if secure web pages (such as SSL-signed pages) communicate with insecure network addresses like localhost, can be avoided. Such mixed content warnings would block communication between browser 312 and the localhost WebSocket connection.
[0028] In some examples, the sync client 320 communicates with the local applications 314 and with the database 308. Specifically, the sync client 320 can be associated with the local files 310 in the database 308. This association can arise because the sync client 320 performs synchronization of the local files 310 in the database 308 with documents in the cloud computing service 101. In one example, the synchronization of a local file 310a can involve sending and receiving changes to the local file 310a such that the local file 310a is a copy of a cloud file 218a stored on the server 206, or such that the cloud file 218a is a copy of the local file 310a. As in Fig. As shown in Figure 3, the Sync Client 320 sends instructions to open a file to the local applications 314 by sending a request to open, view, edit or display a file.
[0029] In some examples, applications 314 are registered with the Sync Client 320 using a manifest file that can be dynamically generated and located in a user profile when the Sync Client 320 and / or the Browser 312 are initialized. In one example, the Sync Client 320 can only communicate with local applications 314 registered with the Sync Client 320 using the manifest file. By registering local applications via a manifest file, the Sync Client 320 can reduce the likelihood of security breaches caused by the execution of potentially malicious applications.
[0030] Fig. Figure 4 shows an example user interface 400 used to manage and access documents stored in a cloud computing service 101. The user interface 400 can be deployed to a user in a browser 212 on a local device 202. As shown in Fig. As shown in Figure 4, the 400 user interface displays a web page containing content delivered from a server. To view the 400 user interface, a user may need to log in or authenticate with an authentication server. Because authentication is required, the 400 user interface can display content tailored to the logged-in user, such as a set of 406 documents stored in a cloud service (such as the 101 cloud computing service) and associated with that user. In the Fig. In the four examples shown, documents 406a and 406b are word processing documents, document 406c is a drawing document, document 406d is a form document, document 406e is a presentation document, and document 406f is a spreadsheet document. This arrangement of documents is not restrictive, and the user interface 400 can accommodate other arrangements or types of documents than those shown. Fig. The documents shown in Figure 4 may be displayed without deviating from the scope of protection of the present disclosure. Documents stored in the cloud computing service 101 may be arranged or contained in folders such as folder 408. If the user selects a Create button 410, a new document can be created. As shown in Fig. As shown in Figure 4, the user interface 400 includes a display of folders on the cloud service that are assigned to the user, and a display of the contents of a folder.
[0031] Occasionally, the local device 202 is online and connected to the server 206. In this case, the server 206 can store copies of the displayed documents 406 in the database 216. The number of displayed documents 406 can correspond to a number of documents assigned to the user for which the server 206 has copies in the database 216. While the local device 202 is online, the sync client 320 can update the database 208 so that local copies of the documents are maintained in the cloud computing service 101 on the local device 202, allowing continued access to the documents even when the local device 202 is offline. The local device 202 can become offline and disconnected from the server 206, such as when the local device 202 is disconnected from the network 204.This can occur if the local device 202 is in an area with intermittent wireless network coverage or is disconnected from a wired network connection. The offline state can also occur if the local device 202 is connected to the network 204, but the local device 202 and / or one of the applications on the local device 202 is not authenticated, so that the server 206 prevents the local device 202 from accessing the server 206. When the local device 202 is offline, the user interface 400 may still be able to display documents 406. The documents 406 may correspond to local files 210 stored in the database 208 and associated with the logged-in user.
[0032] The user can use the user interface 400 to select a document 406 to open with one of the local applications 214. Specifically, the user can select one of the documents 406 and then select an application 214 with which to open the selected document 406. In the Fig. In the example shown in Figure 4, the user selected a presentation document (406e) by selecting the adjacent radio button. Generally, other methods can be used to select a document, such as clicking the name of the desired document once or multiple times, or dragging and dropping the desired document to a specified location. As shown in Fig. As shown in Figure 4, the user then selects an application by selecting menu item 402 and then selects option 418 “Open with”.
[0033] If the user has selected option 418, a list of application candidates 420a and 420b (generally application candidate 420) is displayed. The list of application candidates 420 can be restricted to include only applications configured to perform operations on documents with the same file type as the selected file 406e. The in Fig. The four application candidates shown (420) contain only one local application (420A) and one server application (420B), although generally any number of local and / or server applications may be shown. Occasionally, no local (or server) applications may be configured to work on the selected file, so no local (or server) applications are included in the list. The user can select one of the listed applications (420) to work on the selected document (406e).
[0034] As in relation to Fig. As described in section 4, the user first selects file 406 and then the application 406 to be used to open the selected file. In another example, the user can first select an application from a list of applications and then select a document that the selected application is configured to work with. In yet another example, the user cannot specify an application, and a default application can be used to open the selected file. If the local device 202 is online, a copy of the selected document can be provided from one of the cloud files 218 in the server database 216. Alternatively, a copy of the selected document can be provided from one of the files 214 in the local database 208.If the local device 202 is offline, a copy of the selected document can be provided from one of the local files 210 in the local database 208. Accordingly, the user can access and edit a cloud-based document using a local application via the browser-based user interface 400. Accessing and editing a cloud-based document with a local application allows the user to utilize enhanced functionality compared to a cloud-based application. Using local applications can also provide an improved editing experience, as using a cloud-based application can result in noticeable latency if the network connection is slow or intermittent.
[0035] Fig. Figure 5 is a flowchart of an exemplary procedure 500 for opening a document using a local application based on a request from a user. In step 502, the browser 212 receives a request from a user to open a document stored in a cloud service, such as the cloud computing service 101. Examples of requested documents may include any of the documents 103 and 406. The requested document may be associated with a file stored on a server, such as server 206, with examples of associated files including the cloud files 218. In one example, the request is expressed by the way in relation to Fig. 4 described user interface 400 received.
[0036] In decision block 504, a processor running browser extension 324, such as processor 328, determines whether Sync Client 320 is running on local device 302. In some examples, processor 328 determines whether Sync Client is installed on local device 302. In some examples, a processor checks a registry, property list, plist, database, preferences, configuration files, or file locations to determine whether Sync Client 320 is installed. If Sync Client 320 is not installed, procedure 500 proceeds to step 506 to guide the user through installing Sync Client 320. Otherwise, if Client 320 is installed, procedure 500 skips step 506 and proceeds directly to step 508.In some examples, procedure 500 does not guide the user through the installation of Sync Client 320 in step 506, but instead terminates procedure 500 if Sync Client 320 is not installed.
[0037] In step 508, the browser extension 324 sends a request to open the requested document to the sync client 320. This request can be sent to the sync client 320 via a proxy process 322 and / or via a WebSocket protocol and / or via a named pipe and / or via standard input and / or standard output and / or via a standard error and / or via a message transfer protocol and / or via cryptographic authentication and / or via other means of communication between applications.All communication between the applications described herein, such as between any of the browser 312, the browser extension 324, the proxy process 322, the sync client 320, the network interface 326, the local applications 314, the database 308, other applications on the local device 202, and similar components on the local device 302 and the server 206, may use any of the application communication means described herein. The request to open the requested document may contain an identifier of the requested document and an identifier of the user logged in to the cloud computing service 101.
[0038] In decision block 510, the browser extension 324 and the sync client 320 authenticate each other to determine whether the user logged into the cloud computing service 101 via browser 312 is the same user as a user authorized to access the local files 310 via sync client 320. This determination may include determining whether the user logged into the cloud computing service 101 and the authorized user of sync client 320 represent the same user account. In some examples, browser 312 and sync client 320 perform authentication by verifying that the user account domain is a recognized domain such as google.com. In other examples, communication between browser extension 324 and sync client 320 to perform authentication takes place via a proxy process 322.In other examples, no proxy process is involved in this communication. This authentication can be performed using a pre-shared key, communication with an authentication server, or some other method to determine that the same user is logged in to both the browser (312) and the sync client (320). The [example] Fig. The authentication process shown in Figure 6 can be used to perform the authentication described above. In some examples, step 510 may occur after step 514 or after step 520.
[0039] If the browser 312 and the sync client 320 do not represent the same user account, procedure 500 proceeds to step 512 to terminate. In some examples, a message may be displayed to the user via the user interface 400 upon termination. The message may include the reason for termination and may suggest one or more actions the user can take to authenticate properly. Suggested actions may include logging into the sync client 320 and logging into the cloud computing service 101 in such a way that the same user account is authenticated with both the sync client 320 and the cloud computing service 101.
[0040] In decision block 514, processor 328, which executes sync client 320, determines whether a local copy of the requested document is available on local device 302. Processor 328 can make this determination by ascertaining whether a file in database 308, like one of the local files 310, is associated with the requested document in cloud computing service 101. The processor can use the document identifier contained in the transmitted request received by sync client 320 in step 508 to determine whether a local copy is available. Such an available local copy can be synchronized with one of the cloud files 218 on server 206.Alternatively, the available local copy may have been previously synchronized with one of the cloud files 218 on server 206 at an earlier time, regardless of whether the local device 302 is online and regardless of the time elapsed since the local copy was synchronized with one of the cloud files 218 on server 206. In some examples, a notification may be displayed to the user that they will be working with a local copy that may not be the most recent version of the requested document if the time elapsed since the local copy was synchronized with server 206 exceeds a predefined threshold. If the time exceeds the predefined threshold, procedure 500 may proceed to decision block 516 and step 522 to attempt to download the latest copy from server 206.In some examples, procedure 500 can proceed to step 520 even if the time exceeds the specified threshold.
[0041] If, in decision block 514, processor 328, which is running sync client 320, determines that no local copy of the requested document is available on local device 302, procedure 500 proceeds to decision block 516, in which processor 328 determines whether local device 302 is online. Processor 328 can make this determination by pinging a server, such as server 206, or by otherwise communicating with a device at a remote location. If local device 302 is not online and therefore disconnected from server 206, the procedure proceeds to step 518 to terminate. Upon termination, a message may be displayed to the user via user interface 400.The message may contain a notification that no local copy is available on local device 302 and that local device 302 is offline, preventing a local copy from being obtained from server 206. In some examples, procedure 500 proceeds directly to a modified step 524 in which sync client 320 sends an empty list of local applications to the browser if, in decision block 514, sync client 320 determines that no local copy of the requested document is available on local device 302.
[0042] If, in decision block 516, the sync client 320 determines that the local device 302 is online and thus connected to the server 206, the procedure 500 proceeds to step 522, in which the sync client 320 downloads a local copy of the requested document from the server 206 to the local device 302. In one example, the local copy might be one of the local files 310 in the database 308. In another example, the local copy might be stored in a less persistent location or in volatile memory such as read / write memory (RAM). Before the procedure proceeds to step 522, the user may be notified and prompted to allow the procedure 500 to continue. Because of a previous choice made by the user not to synchronize the requested document with the local device 302, a local copy might not have been available initially.Alternatively, no local copy may have been available initially if the Sync Client 320 was not installed in step 502, but only in step 506 of procedure 500. After the local copy of the document has been downloaded from the server in step 522, procedure 500 proceeds to step 520. Otherwise, in decision block 514, the Sync Client 320 determines that a local copy of the requested document is available, and procedure 500 proceeds to step 520.
[0043] In step 520, the sync client 320 determines which of the local applications 314, if any, are capable of performing operations on the local copy. The sync client 320 can determine that none, one, or several local applications 314 are configured to perform operations on the local copy. The sync client can make this determination by identifying the file type of the local copy by analyzing the document identifier, file name, file extension, initial block, or other means of determining the format, and then comparing this with a manifest file and / or a registry and / or a property list and / or a plist and / or configuration files and / or preferences and / or a database and / or other means of determining local applications configured to perform operations on a particular file type or file format.The Sync Client 320 can determine that one of the local applications 314 is the default application for opening the local copy.
[0044] In step 524, the sync client 320 sends a list of local applications capable of working on the local copy to the browser extension 324, optionally via the proxy process 322. The list can reference none, one, or a set of local applications 314 configured to work on the local copy, using application identifiers. For each application referenced, the list can include whether the application is the default application for files of the requested file type and an icon for the application.
[0045] In step 526, the browser extension 324 presents the list of local applications to the user via the user interface 400. In some examples, the browser extension 324 can also determine that one or more server applications can open the requested document. In these examples, the browser extension 324 can present a list of server applications to the user via the user interface 400. If the received list contains no local applications, no local applications can be displayed to the user, and only server applications can be displayed. If no server applications are configured to perform operations on the requested document, only local applications can be displayed.If no local applications or server applications are configured to perform operations on the requested document or its local copy, no applications can be displayed and the procedure terminates with error 500. The user may be notified that the requested document cannot be opened.
[0046] In step 528, the user selects an application from the list. The user can make the selection via user interface 400, as described in relation to Fig. As explained in section 4, instead of requiring the user to select an application from the list, the user can be presented with an option to use a default application. Default applications can be particularly useful for users who frequently use the same application to open files of similar types. The default application for a specific file or file type can be updated based on a user's previous selection of applications for that file or file type.
[0047] In decision block 530, the browser extension 324 determines whether the selected application is a local application or a server application. For example, the browser extension 324 can compare the selected application against the list of applications sent in step 524 to determine whether the selected application is a local application or a server application. If the selected application is a server application, procedure 500 proceeds to step 532 to open the requested document using the selected server application. In one example, the selected server application might open the requested document from a server 206 included in the cloud computing service 101, instead of opening a local copy of the requested document. In another example, the selected server application might open a local copy of the requested document from one of the local files 310.
[0048] If, in decision block 530, browser extension 324 determines that the selected application is a local application, procedure 500 proceeds to step 534, in which browser extension 324 sends an identifier associated with the selected identifier to sync client 320, optionally via proxy process 322. Browser extension 324 may also send an identifier of the user logged into cloud computing service 101, such as an email address, and an identifier for the requested document. A manifest file can store application-identifier mappings for use in step 534. For example, instead of a local path, an executable file, or any other form of direct command, an identifier corresponding to the selected application may be sent.In this example, the security of local device 302 is enhanced because a local path, an executable file, or a direct command can be used to attack the local device for malicious purposes. If an identifier associated with the selected application is used, the Sync Client 320 must also possess the association, and the application must be known to the Sync Client 320 for the Sync Client 320 to take action based on the identifier. This provides an additional layer of security for local device 302. In other examples, no application identifier is used, and a more direct but less secure method of identification, such as a local path, an executable file, or another form of direct command, is employed.
[0049] In step 536, the Sync Client 320 sends a command to the local device's operating system to use the selected local application to open the local copy of the requested document. In step 536, the operating system can open the selected local application if needed. The selected local application can be one of the applications 314, and the local copy can be one of the local files 310. In some examples, the Sync Client 320 can send the command directly to the selected local application, or the proxy process 322 can participate in sending the command. In some examples, step 536 includes a step to prompt the user for confirmation that the Sync Client 320 is allowed to open the selected application. In some examples, this prompt is executed the first time the Sync Client 320 opens each local application, but it is not executed in subsequent instances where the Sync Client 320 opens that application.
[0050] In step 538, the selected local application opens the local copy of the requested document. If the selected local application is not already running, it starts before opening the selected local copy. The user can then view, edit, and save the local copy of the document using the selected local application. Any changes made to the document by the user can be sent to the server 206 by the Sync Client 320. By enabling communication between the browser 312, the browser extension 324, the Sync Client 320, and the local applications 314, the system 300 allows one of the local applications 314 to open one of the local files 310 based on a request received through the user interface 400.
[0051] In some examples, procedure 500 is simplified. The browser 312 can determine the file type in step 502 and include the file type in the request sent in step 508. In these examples, step 520 can include determining which local applications can open files of the requested file type, regardless of whether a local copy exists. In these examples, the sync client 320 can download the requested document from a server to create a local copy 310a when the application is selected in step 528.
[0052] Fig. 6 is a flowchart of an exemplary procedure 600 used by the system 200 to guide the user as in the way in relation to Fig. The decision block 510 described in section 5 is used for authentication. The browser extension 324 and the sync client 320 can use the procedure 600 to determine that they represent the same user, and thus that the user logged into the browser has access to the local files 310.
[0053] In step 602, the user authenticates with the cloud computing service 101 using browser 312. During authentication, browser 312 can receive a pre-shared key from a server associated with cloud computing service 101 and can also share the pre-shared key with browser extension 324.
[0054] In step 604, the user authenticates with the Sync Client 320. Authentication with the Sync Client 320 may be part of the Sync Client 320 installation or it may be unrelated. For example, authentication may occur when the local device 302 starts up, when authenticating in response to a user request for a document in step 502 of procedure 500, when authenticating when the local device transitions from offline to online, or at any other time.
[0055] In step 606, the browser extension 324, optionally via the proxy process 322, sends an authentication request to the sync client 320. During authentication, it is determined that both the browser extension 324 and the sync client 320 represent the same user account. The authentication request can be sent using any of the methods or protocols described here that relate to communication between applications. In some examples, sending an authentication request includes sending a one-time key from the browser extension 324 to the sync client 320.
[0056] In step 608, the sync client 320 calculates the initiation hash and sends it to the browser extension 324. In an example, calculating an initiation hash involves the sync client 320 setting a separate one-time key and calculating a hash of: a one-time key received by the browser extension 324 (such as the one-time key that can be received in step 606); a separate one-time key set by the sync client 320 (such as the separate one-time key that can be set in step 608); a "setting" keyword; a pre-shared key representing the user account logged in to the sync client 320; or any suitable combination thereof.In one example, the Sync Client 320 sends the initiation hash calculated by the Sync Client 320 and the one-time key set by the Sync Client 320 to the browser extension 324.
[0057] In decision block 610, browser extension 324 independently computes an initiation hash and determines whether the initiation hash computed by browser extension 324 matches the initiation hash received from sync client 320. The independent computation of the initiation hash may involve browser extension 324 computing a hash of: a one-time key set by browser extension 324 (such as the one-time key that can be set in step 606); a one-time key received from sync client 320 (such as the one-time key that can be received in step 608); a "set" keyword; a pre-shared key representing the user account logged into cloud computing service 101; or any suitable combination thereof.After independently calculating the initiation hash, browser extension 324 determines whether the independently calculated initiation hash matches the initiation hash received from sync client 320. If the calculated initiation hash does not match the received initiation hash, this may indicate that the same user account is not logged in to both sync client 320 and cloud computing service 101. If browser extension 324 determines in decision block 610 that these two initiation hashes do not match, the procedure proceeds to step 612 to terminate. Upon termination, the user may be notified that authentication failed and may be offered one or more actions to take to authenticate correctly.
[0058] In decision block 610, the browser extension 324 determines whether the same user is logged in to both the browser extension 324 and the sync client 320. To improve the security of the locally stored files 310, the sync client can perform the same determination independently. If the received initiation hash in decision block 610 matches the independently calculated initiation hash, the procedure 600 proceeds to step 614, in which the browser extension 324 calculates an acknowledgment hash and sends the acknowledgment hash to the sync client 320.The calculation of the confirmation hash may involve calculating a hash of the following: a one-time key set by the browser extension 324 (such as the one-time key that can be sent in step 606); a one-time key received by the sync client 320 (such as the one-time key that can be received in step 610); a 'confirm' keyword; a pre-shared key representing the user account logged into the cloud computing service 101; or any suitable combination thereof.
[0059] In decision block 616, Sync Client 320 independently computes an acknowledgment hash and determines whether the acknowledgment hash computed by Sync Client 320 matches the acknowledgment hash received by Browser Extension 324. The independent computation of the acknowledgment hash by Sync Client 320 may involve computing a hash of: a one-time key received by Browser Extension 324 (such as the one-time key that can be received in step 606); a one-time key set by Sync Client 320 (such as the one-time key that can be set in step 608); an acknowledgment keyword; a pre-shared key representing the user account logged in to Sync Client 320; or any suitable combination thereof.After the Sync Client 320 independently calculates the confirmation hash, it determines whether the confirmation hash calculated by the Sync Client 320 matches the confirmation hash received by the browser extension 324. If the independently calculated confirmation hash does not match the received confirmation hash, this may indicate that the same user account is not logged in to both the Sync Client 320 and the cloud computing service 101. If this is the case, the procedure 600 proceeds to step 618 to terminate. Upon termination of the procedure, the user may be notified that authentication failed and may be advised of one or more steps to authenticate correctly.
[0060] If, in decision block 616, Sync Client 320 determines that the confirmation hash received from Browser Extension 324 matches the confirmation hash independently calculated by Sync Client 320, Procedure 600 proceeds to step 620 to complete authentication. By performing this authentication, Sync Client 320 and Browser Extension 324 both independently verify that they represent the same user account, ensuring that only authorized users can access locally stored files. To improve the detection of whether Browser Extension 324 or Sync Client 320 has been compromised, it is advantageous for both Browser Extension 324 and Sync Client 320 to perform this verification independently. However, independent verification by both Browser Extension 324 and Sync Client 320 can be time-consuming and unnecessarily inefficient.Thus, only one of these components can perform the verification and send a message to the other component indicating that the authentication is complete, eliminating the need for the other component to perform a separate verification.
[0061] Fig. 7 is a block diagram of a computer device such as any of the system's components. Fig. 1-3 for executing any of the processes described herein. Each component of these systems may be implemented in one or more computer devices 700. In certain aspects, several components of these systems may be contained within one computer device 700. In certain implementations, a component and a data storage device may be implemented across multiple computer devices 700.
[0062] The computer device 700 includes at least one communication interface unit, one input / output controller 710, system memory, and one or more data storage devices. The system memory includes at least one read / write memory (RAM 702) and at least one read-only memory (ROM 704). All these elements are connected to a central processing unit (CPU 706) to enable the operation of the computer device 700. The computer device 700 can be configured in many different ways. For example, the computer device 700 can be a conventional single-user computer, or alternatively, the functions of the computer device 700 can be distributed across multiple computer systems and computer architectures. Alternatively, a computer system can be virtualized to provide the functions of multiple computer devices 700. Fig.7 is the computer device 700 linked to other servers or systems via a network or a local network.
[0063] The 700 computer device can be configured in a distributed architecture, with databases and processors housed in separate units or located in separate locations. Some units perform primary processing functions and include at least one general-purpose controller or processor and system memory. In distributed architecture implementations, each of these units can be connected via the 708 communication interface unit to a communication hub or communication port (not shown), which serves as a primary communication link with other servers, other client or user computers, and other related devices. The communication hub or communication port may itself have minimal processing capability, primarily functioning as a communication router.A variety of communication protocols, including but not limited to: Ethernet, SAP, SAS™, ATP, BLUETOOTH™, GSM and TCP / IP, can be part of the system.
[0064] The CPU 706 contains a processor, such as one or more conventional microprocessors, and one or more supplementary coprocessors, such as math coprocessors, to reduce the CPU 706's workload. The CPU 706 communicates with the Communication Interface Unit 708 and the Input / Output Controller 710, through which the CPU 706 communicates with other devices, such as other servers, user terminals, or other equipment. The Communication Interface Unit 708 and the Input / Output Controller 710 can include multiple communication channels for simultaneous communication with, for example, other processors, servers, or client terminals.
[0065] Furthermore, the CPU 706 is connected to a data storage device. The data storage device may contain a suitable combination of magnetic, optical, or semiconductor memory and may include, for example, RAM 702, ROM 704, a flash drive, an optical disk such as a compact disc, or a hard disk drive. The CPU 706 and the data storage device may each be, for example, entirely contained within a single computer or other computer device; or they may be connected to each other by a communication medium such as a USB port, a serial cable, a coaxial cable, an Ethernet cable, a telephone line, a radio frequency transceiver, or other similar wireless or wired medium, or a combination thereof. For example, the CPU 706 may be connected to the data storage device via the Communication Interface Unit 708.The CPU 706 can be configured to perform one or more specific processing functions.
[0066] The data storage device may, for example, (i) an operating system 712 for the computer device 700; (ii) one or more applications 714 (e.g., computer program code or a computer program product) designed to instruct the CPU 706 in accordance with the systems and procedures described herein and, in particular, in accordance with the processes described in detail with respect to the CPU 706; or (iii) one or more databases 716 designed to store information that may be used to store information required by the program.
[0067] The operating system 712 and the applications 714 can be stored, for example, in a compressed, uncompiled, or encrypted format and can contain computer program code. The program instructions can be read into the processor's main memory from a computer-readable medium other than the data storage device, such as the ROM 704 or the RAM 702. Although the execution of sequences of instructions in the program causes the CPU 706 to perform the process steps described herein, a hard-wired circuit arrangement can be used to implement the processes of the present invention instead of, or in conjunction with, software instructions. Thus, the described systems and methods are not limited to any specific combination of hardware and software.
[0068] Suitable computer program code may be provided to perform one or more functions related to the execution of the processes described herein. Furthermore, the program may include program elements such as an operating system 712, a database management system, and "device drivers" that enable the processor to connect to computer peripheral devices (e.g., a video display, a keyboard, a computer mouse, etc.) via an interface using the input / output controller 710.
[0069] The term “computer-readable medium,” as used herein, refers to any non-temporary medium that provides, or is involved in providing, instructions for execution to the processor of the Computer Device 700 (or to any other processor of a device described herein). Such medium may take any form, including, but not limited to, non-volatile and volatile media. Non-volatile media include, for example, optical, magnetic, or magneto-optical disks, or integrated circuit memory such as flash memory. Volatile media include dynamic read / write memory (DRAM), which usually constitutes main memory. Common forms of computer-readable media include, for example,a floppy disk, a flexible disk, a hard disk, a magnetic tape, any other magnetic medium, a CD-ROM, a DVD, any other optical medium, punched cards, a paper tape, any other physical medium with hole patterns, a RAM, a PROM, an EPROM or EEPROM (electronically erasable programmable read-only memory), a FLASH EEPROM, any other memory chip or any other memory cartridge or any other non-temporary medium that a computer can read from.
[0070] Various forms of computer-readable media can be involved in the execution of one or more sequences of one or more instructions for the CPU 706 (or for any other processor of an apparatus described herein). For example, the instructions may initially be stored on a magnetic disk of a remote computer (not shown). The remote computer can load the instructions into its dynamic memory and transmit them over an Ethernet connection, a cable line, or even a telephone line using a modem. A local communication device (such as a server) opposite a computer apparatus 700 can receive the data on the respective communication line and arrange the data on a system bus for the processor. The system bus transmits the data to the main memory, from which the processor reads and executes the instructions.Instructions received by main memory can optionally be stored in memory either before or after execution by the processor. Furthermore, instructions can be received via a communication port as electrical, electromagnetic, or optical signals, which are exemplary forms of wireless communication or data streams transmitting various types of information.
Claims
[1] Computer-implemented procedure executed by a sync client (320) comprising: Receiving a request from a first application on a local device (302) to open a document which has a document identifier and is associated with a first file stored on a server (206), wherein the request includes the document identifier and a user identifier; Determine that a second file stored on the local device (302) is associated with the document identifier and that a user associated with the user identifier is authorized to access the second file; Sending (524) a list comprising one or more applications that are on the local device (302) and that are capable of opening the second file, based on the determination to the first application; Receiving (534) a specification of a second application selected from the list (528), from the first application; and Sending (536) a message to open the second file with the second application; including determining whether the user is authorized to access the second file: Received (606) from the first application, an authentication request containing an initial one-time key; Calculate (608) an initiation hash based on the first one-time key and a pre-shared key; Sending the initiation hash to the first application for verification; Received (614), from the first application, of an acknowledgment hash; and Verify (616) that the confirmation hash matches an independently calculated confirmation hash; wherein the first application is a browser (312) or a browser extension (324) associated with the browser (312). [2] Method according to claim 1, wherein: The sync client (320) communicates with an intermediary proxy, which sends the request to the sync client (320), receives the list from the sync client (320), and sends the information back to the sync client (320); and the intermediary proxy modifies the request and / or the list and / or the specification based on formatting requirements for the sync client (320) and for the first application. [3] Method according to claim 1, wherein: a content file stores a list of identifiers of local applications that correspond to several local applications (314) that are installed on the local device (302) and are registered with the sync client (320); The message to open the second file includes an application identifier associated with the second application, and The procedure also includes determining whether the application identifier is contained in the content file. [4] Method according to claim 1, wherein the requirement and / or the list and / or the specification includes standard input stream data or standard output stream data associated with the first application. [5] The method of claim 1, further comprising creating the second file from a copy of the first file. [6] Method according to claim 1, wherein: the user provides the request via the browser (312). [7] Method according to claim 1, wherein the list is sent to the first application only when the second file is synchronized with the first file. [8] Computer-implemented method listed by a browser or browser extension that includes: Receiving a request from a user to open a document that has a document identifier and is associated with an initial file stored on a server, at a local device, wherein the request includes the document identifier and a user identifier associated with the user; Send (606) to an initial application, a request for authentication, comprising an initial one-time key; Received, from the first application, an initiation hash; Compute (610), an independent initiation hash based on the first one-time key and a pre-shared key; Determine (610) that the received initiation hash matches the independent initiation hash; Calculating (614) a confirmation hash based on the pre-shared key; Send (614) to the first application, the confirmation hash; Sending the requested document ID and user ID to the first application on the local device; Receiving (524) a list comprising one or more applications that are on the local device, from the first application; Receiving (528) a specification of a second application selected from the list, from the user; and Sending (534) a message comprising the file identifier and an identifier associated with the second application to the first application; wherein the first application is a sync client on the local device. [9] System (300) comprising a processor (328) configured to: Receiving a request from a first application on a local device (302) to open a document which has a document identifier and is associated with a first file stored on a server (206), wherein the request includes the document identifier and a user identifier; Determine that a second file stored on the local device (302) is associated with the document identifier and that a user associated with the user identifier is authorized to access the second file; Sending a list comprising one or more applications that are on the local device (302) and that are capable of opening the second file, based on the determination to the first application; Receiving a query from the first application for a second application selected from the list; and Sending a message to open the second file with the second application; determining whether the user is authorized to access the second file includes: Received (606) from the first application, an authentication request containing an initial one-time key; Calculate (608) an initiation hash based on the first one-time key and a pre-shared key; Sending the initiation hash to the first application for verification; Received (614), from the first application, of an acknowledgment hash; and Verify (616) that the confirmation hash matches an independently calculated confirmation hash; wherein the first application is a browser (312) or a browser extension (324) associated with the browser (312). [10] System (300) according to claim 9, wherein: The receiving, determining, and sending operations are performed by a sync client (320) that communicates with an intermediary proxy, which sends the request to the sync client (320), receives the list from the sync client, and sends the information back to the sync client (320); and the intermediary proxy modifies the request and / or the list and / or the specification based on formatting requirements for the sync client (320) and for the first application. [11] System (300) according to claim 9, wherein: Receiving, sending and determining are performed on a sync client (320); a content file stores a list of identifiers of local applications that correspond to several local applications (314) that are installed on the local device (302) and are registered with the sync client (320); A message to open the second file includes an application identifier associated with the second application, and The message to open the second file is sent based on a determination that the application identifier is contained in the content file. [12] System (300) according to claim 9, wherein the requirement and / or the list and / or the specification includes standard input stream data or standard output stream data associated with the first application. [13] System (300) according to claim 9, further comprising creating the second file from a copy of the first file. [14] System (300) according to claim 9, wherein the user provides the request via the browser (312). [15] System (300) according to claim 9, wherein the list is sent to the first application only when the second file is synchronized with the first file. [16] System comprising a processor configured to: Receiving a request from a user to open a document that has a document identifier and is associated with an initial file stored on a server, at a local device, wherein the request includes the document identifier and a user identifier associated with the user; Send (606) to an initial application, a request for authentication, comprising an initial one-time key; Received, from the first application, an initiation hash; Compute (610), an independent initiation hash based on the first one-time key and a pre-shared key; Determine (610) that the received initiation hash matches the independent initiation hash; Calculating (614) a confirmation hash based on the pre-shared key; Send (614) to the first application, the confirmation hash; Sending the requested document identifier and user identifier to an initial application on the local device; Receiving a list, including one or more applications that are on the local device, from the first application; Receiving a notification from the user of a second application selected from the list; and Sending a message to the first application that includes the file identifier and an identifier associated with the second application; where the first application is a sync client on the local device.
Citation Information
Patent Citations
Synchronizing local clients with a cloud-based data storage system
US20130226876A1
System and method for detecting and integrating with native applications enabled for web-based storage
US20130346450A1
In-line sign in
US7251827B1