This relates generally to network communications, including but not limited to verifying a user's login to an application by using contact information of the user.
Mobile devices and applications have become an increasingly dominant means through which consumers access, download, and consume electronic content over the Internet. Many of these applications require the user to log in or otherwise authenticate with them in order to use the application or various features of the application. In some cases, the user may log in using, for example, social networking system login information or email account login information.
However, a user who wishes to use an application may question the legitimacy of that application. Because of this, for example, the user may be wary of providing the application with his or her full login information. Furthermore, even if the application provides for an alternate way to verify the login, such a form of verification may be unreliable and/or not always available. This may cause the user to decide not to use the application.
Accordingly, there is a need for methods, devices, and systems for improving user verification with various applications that run on mobile devices. Embodiments set forth herein are directed to methods, devices, and systems for verifying a user with an application using contact information of the user. For example, the user may provide his or her contact information to the application on a user device, and a separate server system may send a request for authentication to the contact information in order to confirm to the application that the user is verified. In an example where the user fails to receive this request for authentication at the contact information, the user may opt to verify with, e.g., a social networking system, which may have the contact information stored in correlation with the user's profile. By providing this alternate form of verifying with the social networking system, the user may still be able to use the application without needing to provide the application with his or her full login information, even when authentication sent to the contact information fails.
In accordance with some embodiments, a method is performed at a server system having one or more processors and memory storing instructions for execution by the one or more processors. The method includes receiving, from a first device, a request to authenticate a user with a third-party application using a social networking system and contact information of the user, and requesting the social networking system to authenticate the user based on the contact information. The social networking system is different from the third-party application.
In accordance with some embodiments, a server system has one or more processors and memory storing instructions for execution by the one or more processors. The instructions include instructions for performing the above method. In accordance with some embodiments, a non-transitory computer-readable storage medium has stored therein instructions that, when executed by the server system, cause the server system to perform the above method.
For a better understanding of the various described embodiments, reference should be made to the Description of Embodiments below, in conjunction with the following drawings. Like reference numerals refer to corresponding parts throughout the figures and description.
Reference will now be made to embodiments, examples of which are illustrated in the accompanying drawings. In the following description, numerous specific details are set forth in order to provide an understanding of the various described embodiments. However, it will be apparent to one of ordinary skill in the art that the various described embodiments may be practiced without these specific details. In other instances, well-known methods, procedures, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.
It will also be understood that, although the terms first, second, etc. are, in some instances, used herein to describe various elements, these elements should not be limited by these terms. These terms are used only to distinguish one element from another. For example, a first item could be termed a second item, and, similarly, a second item could be termed a first item, without departing from the scope of the various described embodiments. The first item and the second item are both items, but they are not the same item.
The terminology used in the description of the various embodiments described herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used in the description of the various described embodiments and the appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “includes,” “including,” “comprises,” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
As used herein, the term “if” is, optionally, construed to mean “when” or “upon” or “in response to determining” or “in response to detecting” or “in accordance with a determination that,” depending on the context. Similarly, the phrase “if it is determined” or “if [a stated condition or event] is detected” is, optionally, construed to mean “upon determining” or “in response to determining” or “upon detecting [the stated condition or event]” or “in response to detecting [the stated condition or event]” or “in accordance with a determination that [a stated condition or event] is detected,” depending on the context.
As used herein, the term “exemplary” is used in the sense of “serving as an example, instance, or illustration” and not in the sense of “representing the best of its kind.”
The network architecture 100 includes client-side modules (e.g., as discussed with reference to
In some embodiments, the user devices 102 are mobile devices and/or fixed-location devices. The user devices 102 are associated with users (e.g., subscribers) who employ the user devices 102 to access one or more IP addresses. The user devices 102 execute web browser applications and/or other applications that can be used to access the one or more IP addresses.
Examples of the user devices 102 include, but are not limited to, feature phones, smart phones, other mobile phones, smart watches, personal digital assistants, portable media players, tablet computers, 2D and 3D gaming devices, virtual reality devices, laptop computers, desktop computers, televisions with one or more processors embedded therein or coupled thereto, in-vehicle information systems (e.g., an in-car computer system that provides navigation, entertainment, and/or other information), wearable computing devices, personal digital assistants (PDAs), enhanced general packet radio service (EGPRS) mobile phones, media players, navigation devices, game consoles, smart televisions, remote controls, combinations of any two or more of these data processing devices or other data processing devices, and/or other appropriate computing devices that can be used to communicate with the proxy server 110 and the remote server 140.
In some embodiments, the network architecture 100 includes one or more base stations 120 for carrier networks that provide cellular service to the user devices 102. One or more network operators (e.g., network service providers, network carriers, or cellular companies) own or control the one or more base stations 120 and related infrastructure. For example, the base station 120 communicably connects one or more user devices 102 (e.g., 102-1) to one another and/or to the networks 130. In some embodiments, the network architecture 100 includes one or more gateways 122 connected to one or more wireless access points 124 respectively for providing Wi-Fi networks to the user devices 102 (e.g., 102-i, 102-n). The base stations 120 and the gateways 122 are responsible for routing traffic between the networks 130 and the user devices 102.
The account server system 140 is implemented on one or more standalone computers or a distributed network of computers. In some embodiments, the account server system 140 also employs various virtual devices and/or services of third party service providers (e.g., cloud computing) to provide the underlying computing resources and/or infrastructure resources of the account server system 140. The account server system 140 includes one or more processors/cores 142 and one or more databases 144. The one or more processors/cores 142 process requests for respective network services from the user devices 102, and provide responses including requested user verification to applications executed on the user devices 102. The database 144 stores various information, including but not limited to authentication codes and user accounts that correlate account IDs with contact information and third-party applications.
Users may employ the user devices 102 to access the social networking system 110 and to participate in a corresponding social networking service. For example, one or more of the user devices 102-1, 102-i, . . . 102-n execute web browser applications that can be used to access the social networking system 110. As another example, one or more of the user devices 102-1, 102-i, . . . 102-n execute software applications that are specific to the social networking system 110 (e.g., social networking “apps” running on smart phones or tablets, such as a Facebook social networking application, a messaging application, etc., running on an iPhone, Android, or Windows smart phone or tablet).
Users interacting with the user devices 102-1, 102-i, . . . 102-n can participate in the social networking service provided by the social networking system 110 by providing and/or consuming (e.g., posting, writing, viewing, publishing, broadcasting, promoting, recommending, sharing) information, such as text comments (e.g., statuses, updates, announcements, replies, location “check-ins,” private/group messages), digital content (e.g., photos (i.e., images), videos, audio files, links, documents), and/or other electronic content. In some embodiments, users provide information to a page, group, message board, feed, and/or user profile of a social networking service provided by the social networking system 110. Users of the social networking service can also annotate information posted by other users of the social networking service (e.g., endorsing, “liking,” or otherwise responding or reacting to a posting of another user, commenting on a posting by another user, or sharing a posting of another user).
In some embodiments, information can be posted on a user's behalf by systems and/or services external to the social networking system 110. For example, the user may post a review of a movie to a movie review website, and with proper permissions that website may cross-post the review to the social networking service on the user's behalf. In another example, a software application executing on a mobile client device, with proper permissions, may use a global navigation satellite system (GNSS) (e.g., global positioning system (GPS), GLONASS, etc.) or other geo-location capabilities (e.g., Wi-Fi or hybrid positioning systems) to determine the user's location and update the social networking service with the user's location (e.g., “At Home,” “At Work,” or “In San Francisco, Calif.”), and/or update the social networking service with information derived from and/or based on the user's location. Users interacting with the user devices 102-1, 102-i, . . . 102-n can also use the social networking service provided by the social networking system 110 to define groups of users. Users interacting with the user devices 102-1, 102-i, . . . 102-n can also use the social networking service provided by the social networking system 110 to communicate (e.g., using a messaging application or built-in feature) and collaborate with each other.
The social networking system 110 includes one or more processors/cores 112 and one or more databases 114. The database 114 is used for storing user profiles, as well as various information relating to user contact information and authentication to be utilized in conjunction with user devices 102 and account server system 140.
The user device 102 includes a user interface 204, including output device(s) 206 and input device(s) 208. In some embodiments, the input devices include a keyboard or a track pad. Alternatively, or in addition, the user interface 204 includes a display device that includes a touch-sensitive surface, in which case the display device is a touch-sensitive display. In user devices that have a touch-sensitive display, a physical keyboard is optional (e.g., a soft keyboard may be displayed when keyboard entry is needed). The output devices 206 also optionally include speakers and/or an audio output connection (i.e., audio jack) connected to speakers, earphones, or headphones. Optionally, the user device 102 includes an audio input device (e.g., a microphone) to capture audio (e.g., speech from a user). Furthermore, some user devices 102 use a microphone and voice recognition software to supplement or replace the keyboard. Optionally, the user device 102 includes a location-detection device, such as a global-navigation-satellite-system (GNSS) receiver (e.g., a GPS (global positioning system), GLONASS, or other geo-location receiver), and/or location-detection software for determining the location of the user device 102.
In some embodiments, the one or more network interfaces 210 include wireless and/or wired interfaces for receiving data from and/or transmitting data to other user devices 102, the social networking system 110, the account server system 140, and/or other devices or systems. In some embodiments, data communications are carried out using any of a variety of custom or standard wireless protocols (e.g., cellular protocols, NFC, RFID, IEEE 802.15.4, IEEE 802.11/Wi-Fi, ZigBee, 6LoWPAN, Thread, Z-Wave, Bluetooth, ISA100.11a, WirelessHART, MiWi, etc.). Furthermore, in some embodiments, data communications are carried out using any of a variety of custom or standard wired protocols (e.g., USB, Firewire, Ethernet, etc.). For example, in some embodiments, the one or more network interfaces 210 include a wireless LAN (WLAN) interface 211 for enabling data communications with other WLAN-compatible devices (via the one or more network(s) 130,
Memory 212 includes high-speed random-access memory, such as DRAM, SRAM, DDR RAM, or other random-access solid-state memory devices; and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid-state storage devices. Memory 212 may optionally include one or more storage devices remotely located from the CPU(s) 202. Memory 212, or alternately, the non-volatile memory solid-state storage devices within memory 212, includes a non-transitory computer-readable storage medium. In some embodiments, memory 212 or the non-transitory computer-readable storage medium of memory 212 stores the following programs, modules, and data structures, or a subset or superset thereof:
Each of the above-identified modules and applications corresponds to a set of executable instructions for performing one or more functions as described above and/or in the methods described herein (e.g., the computer-implemented methods and other information processing methods described herein). These modules (i.e., sets of instructions) need not be implemented as separate software programs, procedures or modules, and thus various subsets of these modules are, optionally, combined or otherwise re-arranged in various embodiments.
Memory 306 includes high-speed random-access memory, such as DRAM, SRAM, DDR RAM, or other random-access solid-state memory devices, and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, and/or other non-volatile solid-state storage devices. Memory 306 may optionally include one or more storage devices remotely located from the processor(s) 142. Memory 306, or alternately the non-volatile memory device(s) within memory 306, includes a non-transitory computer-readable storage medium. In some embodiments, memory 306 or the computer-readable storage medium of memory 306 stores the following programs, modules and data structures, or a subset or superset thereof:
As described above, contact information 354 may include a phone number, email address, and/or IM address of a user. In some embodiments, the memory 306 may additionally include an email generator for generating an email message including an authentication code generated by authentication code generator 360, to be sent to contact information for a user by user device 102, to be used when the contact information includes an email address.
Memory 406 includes high-speed random-access memory, such as DRAM, SRAM, DDR RAM, or other random-access solid-state memory devices, and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, and/or other non-volatile solid-state storage devices. Memory 406 may optionally include one or more storage devices remotely located from the processor(s) 112. Memory 406, or alternately the non-volatile memory device(s) within memory 406, includes a non-transitory computer-readable storage medium. In some embodiments, memory 406 or the computer-readable storage medium of memory 406 stores the following programs, modules and data structures, or a subset or superset thereof:
With reference to
In some embodiments, after the server system 140 receives the request from the first device, the server system 140 may generate (e.g., by using authentication code generator 360,
After generating the first authentication code, the server system 140 may generate a message to be sent to the contact information. For example, in some embodiments, server system 140 may generate a Short Message Service (“SMS”) message (e.g., using SMS generator 370,
In some examples, the contact information (e.g., the user's phone number) may be associated with the first device. However, embodiments are not limited thereto, and in other examples, the contact information may be associated with another of user devices 102 (
The user may thus receive the message (e.g., SMS message) including the first authentication code on a user device 102 associated with the contact information (e.g., the user's phone number). At this time, the user may enter the first authentication code on the first device. For example, the user may enter the first authentication code into the third-party application.
The first device may then send the entered code to the server system 140 (e.g., account server system 140,
In an example where the server system 140 has received (512) an indication that the user has authenticated with the first authentication code, the server system 140 may proceed to create (517) an account identification (e.g., “account ID” 352,
However, messaging systems are not necessarily 100% reliable, and in some examples, the message including the first authentication code and sent (511) by the server system 140 to the contact information may not reach the contact information. For example, an SMS message may fail to reach the provided phone number. In such examples, where the server system 140 fails to receive (512) an indication that the user has authenticated with the first authentication code, the user may still desire to be able to verify with the third-party application without providing complete login information to the third-party application.
Thus, in some embodiments, when the server system 140 fails to receive (512) an indication that the user has authenticated with the first authentication code, the user on the first device (e.g., a user device 102) may opt for the server system 140 to resend an authentication code (which may be the same or different from the first authentication code). Alternatively, the third-party application may provide the user with the option to authenticate using, e.g., a notification accessed through a social networking system (e.g., social networking system 110,
Thus, if the user selects this option, the server system 140 may receive (514) a request from the first device to verify the user with the third-party application using the social networking system and the contact information. As with the authentication using messaging, only the user's contact information may need to be provided to the server system 140 in order for authentication to take place. In some embodiments, the social networking system is different from the third-party application, and the third-party application does not interface or otherwise interact with the social networking system.
In some embodiments, the server system 140 may thereafter send a request (515) over network 130 to the social networking system 110 to authenticate the user based on the contact information. In some examples, this request may include the first authentication code or another authentication code generated by authentication code generator 360, although embodiments are not limited thereto. The request may also include an Internet Protocol (“IP”) address associated with the first device.
In some embodiments, the server system 140 may receive (516) an indication that the user is authenticated and, in an example, proceed with verifying the user's login to the third-party application on the first device. This indication may be received from the social networking system 110. Alternatively, this indication may be received in the form of an authentication code sent from the first device that, in one example, matches an authentication code received from the social networking system 110 or that, in another example, matches the first authentication code or another authentication code sent to the social networking system 110 by the server system 140. The authentication performed by social networking system 110 will be described below with reference to
In some embodiments, after receiving (516) an indication that the user is authenticated, the server system 140 may create (517) an account ID associated with the contact information and the third-party application, as described above. However, embodiments are not limited thereto, and in another example, the server system 140 may create the account ID associated with the contact information prior to receiving (516) an indication that the user is authenticated, and may activate the account ID after receiving (516) such an indication.
With reference to
In some embodiments, the social networking system 110 may generate (e.g., using hashed contact information generator 470) a first hash value directly from the phone number. Furthermore, the social networking system may generate a second hash value from the phone number and a country code of the user. To generate this second hash value, the social networking system 110 may first determine a country of the user (e.g., using country identifier 460). In an example embodiment, this determination may be made based on the IP address of the first device, as provided by the server system 140, but embodiments are not limited thereto.
In some embodiments, once the country of the user is identified, the hashed contact information generator 470 may generate (562) the second hash value based on the phone number and the country code for the user's identified country. For example, this second hash value may be a concatenation of a hash of the country code and a hash of the phone number.
In some embodiments, the social networking system 110 may compare (563) (e.g., using hash checker 490,
With regard to the stored hash values that the social networking system 110 compares the first and second hash values against, in some embodiments, these stored hash values may be pre-stored as hashed contact information (e.g., hashed contact information 452,
In some embodiments, after identifying (564) a match between one of the first and second hash values and one of the stored hash values (e.g., one of the values of hashed contact information 452,
In some embodiments, the social networking system 110 may send (566) a notification to a second device (e.g., one of the user devices 102,
The notification may be a notification to authenticate a login to the third-party application on the first device, and may include a message. The message may include a hyperlink or an authentication code. In an embodiment where the message includes a hyperlink, navigating to the hyperlink on the second device logged into the social networking system 110 may serve as confirmation to the social networking system 110 that the user authenticates the login to the third-party application at the first device. In other examples, the user may respond to the notification message on the second device in whatever manner desirable for authenticating the user. The social networking system 110 may treat these actions as receipt (567) of a response to the authentication notification that thereby authenticates the user, and informs the server system 140 accordingly such that the server system 140 receives (e.g., step 516,
Alternatively, in an embodiment where the message includes an authentication code, this authentication code may be the first authentication code or another authentication code provided to the social networking system 110 from server system 140, as described above, or it may be an authentication code generated by the social networking system 110 itself (e.g., using authentication code generator 480). In an embodiment where the social networking system 110 generates the authentication code, this authentication code may be sent back to server system 140 for authentication. The user may be prompted to enter this authentication code at the first device, in which case the server system 110 may receive the authentication code from the first device, or the user may enter the code as a response to the notification message on the second device logged into the social networking system 110. In either case, server system 140 may treat successful authentication as receipt (516) of an indication (directly or indirectly) from the social networking system 110 that the user is authenticated, as described above.
Although some of various drawings illustrate a number of logical stages in a particular order, stages which are not order dependent may be reordered and other stages may be combined or broken out. While some reordering or other groupings are specifically mentioned, others will be apparent to those of ordinary skill in the art, so the ordering and groupings presented herein are not an exhaustive list of alternatives. Moreover, it should be recognized that the stages could be implemented in hardware, firmware, software or any combination thereof.
The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the scope of the claims to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen in order to best explain the principles underlying the claims and their practical applications, to thereby enable others skilled in the art to best use the embodiments with various modifications as are suited to the particular uses contemplated.