Le site Web de l'application pour l'interface de connexion de la troisième plate-forme: http://open.51094.com/
document:
Pour faciliter davantage d'amis en développement, j'ai spécialement intégré toutes les interfaces sur le marché qui soutiennent la connexion conjointe tierce. La connexion qui nécessite des développements multiples peut désormais être terminée en une seule fois. Il n'est pas nécessaire de retarder les progrès du projet en attendant l'examen. Facile à utiliser et facile à utiliser. Voici la méthode d'utilisation spécifique de ce plug-in:
1. Connectez-vous d'abord au site Web http://open.51094.com/.
2. Cliquez sur le bouton "Connexion" dans le coin supérieur droit pour vous connecter. Après avoir enregistré avec succès, il passera automatiquement au centre de gestion.
3. Après être entré dans le centre de gestion, cliquez sur le bouton Créer, comme indiqué ci-dessous:
4. Sélectionnez le type d'application comme "application de site Web", et après l'achèvement, passez à la page de remplissage des informations de demande.
5. La page de remplissage des informations est indiquée dans la figure ci-dessous. Remplissez correctement les informations de demande au besoin. Une fois terminé, cliquez sur Créer une application pour l'utiliser.
Description du paramètre:
Nom: l'abréviation de l'application
Détails: Informations sur la description de l'application, le nombre de mots ne doit pas être inférieur à 10 caractères chinois
Connectez-vous avec succès l'adresse de rappel:
Le demandeur reçoit l'URL des informations de l'utilisateur et nous informerons le demandeur dans le format des paramètres URL +? +. N'oubliez pas que l'URL que vous remplissez ne peut pas le contenir?
Méthodes de connexion prises en charge:
Fournissez votre propre choix, la valeur par défaut est de sélectionner tout.
Créer un schéma d'application
1. Vous pouvez afficher l'adresse JS que l'application doit référencer dans le centre de gestion du centre d'utilisateurs, comme indiqué dans la boîte rouge dans la figure ci-dessous:
2. Ajoutez le code JS suivant à la page dont vous avez besoin pour vous connecter
<script type = "text / javascript" src = "http://open.51094.com/user/myscript/153dee5be21e2.html"> </ script>
3. Ajouter (<span id = "hzy_fast_login"> </span>) à la balise de page comme indiqué dans la figure suivante
4. Après avoir rejoint avec succès, vous pouvez voir la connexion correspondante sur la page de connexion. Comme indiqué dans la figure ci-dessous.
Veuillez utiliser la deuxième méthode d'enregistrement des utilisateurs après 2014-11-1
Plan 1 (déprécié)
Méthode de rappel | OBTENIR | |
URL de rappel | L'adresse de rappel de connexion s'est remplie lors de la demande de demande | |
Format de rappel | http: //url/user/hezuo.html? Param =% 7b% 22Name% 22% 3A% 22OH% 21NO% 22% 2C% 22Img% 22% 3A% 22http% 3a% 5c% 2f% 5c% 2fq.qlogo.cn% 5c% 2fqapp% 5c% 2f10047 8927% 5C% 2F863A85B9B176E2408E05DF05D46FDB3F% 5C% 2F100% 22% 2C% 22SEX% 22% 3A0% | |
paramètre | Après avoir obtenu le contenu du paramètre PARAM, effectuez d'abord le décodage de l'URL, puis effectué le décodage JSON pour obtenir le contenu suivant: | |
nom | Connectez-vous pour obtenir le nom d'utilisateur | |
IMG | Adresse d'avatar | |
sexe | genre | |
uniq | Le seul code obtenu par un tiers | |
depuis | Des sources de connexion telles que QQ, Weibo, Renren, etc. | |
Plan 2
Veuillez vous référer à: http://test.open.51094.com/index.php
Méthode de rappel | OBTENIR | |
URL de rappel | L'adresse de rappel de connexion s'est remplie lors de la demande de demande | |
Format de rappel | http: //url/user/hezuo.html? code = code | |
paramètre | Après avoir obtenu le contenu du paramètre de code, utilisez la méthode Post pour demander: URL: http://open.51094.com/user/auth.html Post Paramètres: Type: get_user_info Code: la valeur du code renvoyé Appid: la valeur appide appliquée (cliquez sur le nom de l'application sur la page Web à obtenir) Token: la valeur de jeton appliquée (cliquez sur le nom de l'application sur la page Web à obtenir) Les informations seront retournées sous la forme d'une chaîne JSON. Après avoir obtenu les informations, json_decode ($ str, true) obtiendra le contenu suivant: (reportez-vous à l'annexe pour la méthode d'acquisition) | |
nom | Connectez-vous pour obtenir le nom d'utilisateur | |
IMG | Adresse d'avatar | |
sexe | genre | |
uniq | Le seul code obtenu par un tiers | |
depuis | Des sources de connexion telles que QQ, Weibo, Renren, etc. | |
Ce plug-in est un plug-in gratuit et peut être utilisé à des fins commerciales. Veuillez marquer le développeur lorsque vous l'utilisez.
Notes sur l'utilisation:
1. Le nom de domaine de la page JS de référence doit être le même que le nom de domaine de l'adresse de rappel lors de l'application.
2. La balise avec id = 'hzy_fast_login' doit être ajoutée à la page après le JS référencé.
3. L'URL de rappel demandée n'est-elle pas autorisée à apparaître?
Ensemble de codes d'erreur:
Code d'erreur | question |
10001 | Erreur d'approvisionnement de l'utilisateur |
10002 | Le jeton ne correspond pas à l'apprid |
10003 | Le nom de domaine demandé ne correspond pas au nom de domaine enregistré (il y a une adresse de rappel pour déterminer le nom de domaine enregistré) |
temps mort | Connexion exprimée, besoin de se connecter à nouveau |
appendice:
PHP obtient le code d'information: code source http://test.open.51094.com/index.php
1. Fichier de configuration open.config.php
contenu:
<? Php
/ **
* @ Adresse enregistrée http://open.51094.com
* @ QQ Communication Group: 373703921
* @ Adresse du blog: http://www.51094.com
* @ Adresse de test: http://open.51094.com/user/login.html
*
* @ auteur: [email protected]
*
** /
définir («appid», «appid obtenu lors de l'application»);
définir («jeton», «valeur de jeton obtenue lors de l'application»);
?>
2. Fichier de classe ouverte Open51094.class.php
<? Php
inclure 'open.config.php';
classe Open51094 {
Privé $ Appid;
Jeton $ privé;
privé $ return_uri;
privé $ access_token;
private $ url = 'http://open.51094.com/user/auth.html';
fonction __construct () {
$ this-> appid = appid;
$ this-> token = token;
}
fonction me ($ code) {
# $ this-> getAccessToken ();
$ params = array (
'type' => 'get_user_info',
'code' => $ code,
'appid' => $ this-> appid,
'Token' => $ this-> token
));
retourner $ this-> http ($ params);
}
Fonction privée http ($ postfields = '', $ méthode = 'post', $ headers = array ()) {
$ ci = curl_init ();
curl_setopt ($ ci, curlopt_ssl_verifypeer, false);
curl_setopt ($ ci, curlopt_returntransfer, 1);
curl_setopt ($ ci, curlopt_connectTimeout, 30);
curl_setopt ($ ci, curlopt_timeout, 30);
if ($ méthode == 'post') {
curl_setopt ($ ci, curlopt_post, true);
if ($ postfields! = '') curl_setopt ($ ci, curlopt_postfields, $ postFields);
}
$ en-têtes [] = "User-Agent: 51094php (Open.51094.com)";
curl_setopt ($ ci, curlopt_httpheader, $ en-têtes);
curl_setopt ($ ci, curlopt_url, $ this-> url);
$ réponse = curl_exec ($ ci);
curl_close ($ ci);
$ json_r = array ();
if (! vide ($ réponse)) $ json_r = json_decode ($ réponse, true);
retourner $ json_r;
}
}
?>
3. Retour à la page Back.php
<? Php
Inclure 'Open51094.class.php';
$ open = new Open51094 ();
$ code = $ _get ['code'];
var_dump ($ open-> me ($ code));
?>
Java obtient le code d'information:
Importer java.util.date;
import java.util.uuid;
Importer javax.servlet.http.httpservletRequest;
import javax.servlet.http.httpservletResponse;
import org.apache.struts2.ServletActionContext;
import org.json.jsonObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.scope;
import org.springframework.sterreotype.Controller;
@SuppressWarnings ("Serial")
@Contrôleur
@Scope ("Prototype")
classe publique UserthirdPartyaction {
// Paramètres fournis par des plates-formes tierces
chaîne statique privée appid = "15 *********";
Token de chaîne statique privée = "14 *********";
Public String ThirdLogin () {
HttpServLetRequest request = servletActionContext.getRequest ();
String code = checkNull.check (request.getParameter ("code"));
System.out.println ("Résultat de connexion tiers Résultat:" + code);
if ("". equals (code) || null == code) {
System.out.println ("La fonction de rappel n'est pas exécutée");
retourner "échouer";
}autre{
String url = httprequest.sendPost ("http://open.51094.com/user/auth.html", "type = get_user_info & code =" + code + "& appid =" + appid + "& token =" + token + "");
System.out.println (URL);
// Résultats de l'analyse
JSONObject JSONOBJ = new JSONObject (URL);
// Obtenez l'objet de valeur de l'objet de clé JSON spécifié
// Analyser l'objet encapsulé
retourner "rediriger";
}
}
}
Classe httprequet:
package wzh.http;
Importer java.io.bufferedReader;
Importer java.io.ioException;
Importer java.io.inputStreamReader;
import java.io.printwriter;
Importer java.net.url;
import java.net.urlconnection;
Importer java.util.list;
importation java.util.map;
classe publique httprequest {/ **
* Envoyez une demande à l'URL spécifiée pour Get Method
*
* URL @param
* L'URL pour envoyer la demande
* @param param
* Paramètres de demande, les paramètres de demande doivent être sous la forme de name1 = value1 & name2 = value2.
* @return URL Response Résultats pour la ressource distante représentée par
* /
String statique public SendGet (URL de chaîne, chaîne param) {Résultat de chaîne = "";
BufferedReader dans = null;
essayer {String UrlNmestring = URL + "?" + param;
URL REALURL = NOUVELLE URL (URLNAMESTRING);
// Ouvre la connexion à l'URL
Connexion UrlConnection = realUrl.OpenConnection ();
// Définir les attributs de demande communes
connection.setRequestProperty ("accepter", "* / *"); connection.setRequestProperty ("connexion", "keep-alive"); connection.setRequestProperty ("User-agent","Mozilla / 4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
// Créer une connexion de connexion réelle.Connect ();
// Obtenez tous les champs d'en-tête de réponse
Map <string, list <string>> map = connection.geTheaderFields ();
// itération à travers tous les champs d'en-tête de réponse
for (String Key: map.KeySet ()) {System.out.println (clé + "->" + map.get (key));
}
// Définissez le flux d'entrée BufferedReader pour lire la réponse URL
in = new BufferedReader (new InputStreamReader (
connection.getInputStream ()));
Ligne de chaîne;
while ((line = in.readline ())! = null) {Résultat + = ligne;
}
} catch (exception e) { System.out.println ("L'exception s'est produite lors de l'envoi de la demande de GET!" + E);e.printStackTrace ();
}
// Utiliser les blocs enfin pour fermer le flux d'entrée
Enfin { essayer { if (in! = null) {joindre();
}
} catch (exception e2) {e2.printStackTrace ();
}
}
Résultat de retour;
}
/ **
* Envoyez une demande de méthode de poste à l'URL spécifiée
*
* URL @param
* L'URL pour envoyer la demande
* @param param
* Paramètres de demande, les paramètres de demande doivent être sous la forme de name1 = value1 & name2 = value2.
* Résultat de réponse @return de la ressource distante représentée
* /
public static String SendPost (URL de chaîne, chaîne param) {Printwriter out = null;
BufferedReader dans = null;
Résultat de chaîne = "";
essayer {URL realUrl = nouvelle URL (URL);
// Ouvre la connexion à l'URL
UrlConnection Conn = realUrl.OpenConnection ();
// Définir les attributs de demande communes
Conn.SetRequestProperty ("accepter", "* / *"); Conn.SetRequestProperty ("Connexion", "Keep-Alive"); Conn.SetRequestProperty ("User-agent","Mozilla / 4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
// Les deux lignes suivantes doivent être définies pour envoyer une demande de poste
Conn.SetDoOutput (true);
Conn.SetDoInput (true);
// obtient le flux de sortie correspondant à l'objet UrlConnection
out = new PrintWriter (Conn.getOutputStream ());
// Envoi des paramètres de demande
Out.print (param);
// tampon du flux de sortie de chasse
out.flush ();
// Définissez le flux d'entrée BufferedReader pour lire la réponse URL
in = new BufferedReader (
new inputStreamReader (conn.getInputStream ()));
Ligne de chaîne;
while ((line = in.readline ())! = null) {Résultat + = ligne;
}
} catch (exception e) { System.out.println ("Exception s'est produite lors de l'envoi de la demande de poste!" + E);e.printStackTrace ();
}
// Utiliser les blocs enfin pour fermer le flux de sortie et le flux d'entrée
Enfin{ essayer{ if (out! = null) {out.close ();
}
if (in! = null) {joindre();
}
}
catch (ioException ex) {ex.printStackTrace ();
}
}
Résultat de retour;
}
}
Joigner la méthode de rédaction et de lecture de la publication:
// Échange pour obtenir la méthode digne, post méthode;
Connexion publique de chaîne statique (code de chaîne)
{
String info = string.empty;
if (code! = "" && code! = null)
{
Httphelper m_http = new httphelper ();
Httpitem item = new httpitem ();
// item.method = "post";
item.url = "http://open.51094.com/user/auth.html";
item.method = "post";
item.encoding = coding.getEncoding ("gbk");
item.ContentType = "Application / X-Www-Form-Urlencoded; charSet = GBK";
item.postData = string.format ("type = get_user_info & code = {0} & appid = 1558be447a9ec7 & token = e383684d8f0acb39d622457f361dc1dc", code);
// item.postData = sbtemp.ToString ();
Httpresult result = m_http.gethtml (item);
String resulthtml = result.html;
Jobject obj = jobject.parse (resulthtml);
String name = obj ["name"]. toString ();
String img = obj ["img"]. toString ();
String Sex = obj ["Sex"]. ToString ();
String Uniq = obj ["Uniq"]. ToString ();
String from = obj ["from"]. toString ();
info = name + "@" + img + "@" + sexe + "@" + uniq + "@" + de;
}
retour des informations;
}
// accepte le code pour renvoyer la page de code
// Connexion de l'interface
String code = request ["code"];
String [] arr = publiclogin.login (code) .split ('@');
if (arr.length == 5)
{
String Unip = arr [3];
String sql = string.format ("SELECT * FROM BS_USER WHERE UNIP = '{0}'", UNIP);
if (csa.dal.dbaccess.getrs (sql) .rows.count> 0)
{
if (csa.dal.dbaccess.getrs (sql) .rows [0] ["mot de passe"]. toString () == "" || csa.dal.dbaccess.getrs (sql) .Rows [0] ["mot de passe"] == null)
{
String str = string.format ("location.href = 'myInformation.aspx? Unip = {0}'", arr [3]);
CSA.HC.COMMON.ECHOJS (STR);
}
autre
{
BS_USER User = new BS_USER ();
user.Unip = Unip;
Factory.getUserbllinSistance (). LoginUnip (utilisateur);
if (curinfo.curUser! = null)
{
NIVLEALNAME = CURINFO.CurUser.LevelName;
name = curinfo.curuser.name;
sexe = curinfo.curuser.sex;
pwd = curinfo.curUser.Password;
img = curinfo.curUser.pic;
}
Csa.hc.common.echojs ("location.href = 'myInformation.aspx'");
}
}
autre
{
// générer du code membre
String Date = DateTime.Now.ToString ("ymdhmssffff");
String usercode = getTreenUmRandomTop () + Date + GetTreenUmRandoMend ();
String ip = httpcontext.current.request.userHostAddress;
String INSSQL = String.Format (@ "Insérer dans [BS_USER] ([CODE], [Username], [NIVEALNAME], [RealName], [Sex], [PIC], [UNIP], [Mot de passe], [Phone], [FXIP])
Valeurs ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}') usercode.substring (3, 8), arr [0] .trim ('"'), arr [2], arr [1] .trim ('"'), arr [3], csa.security.encrypt.getmd5 ("123456"), "fkt_" + usercode.substring (3, 8), ip);
int row = csa.dal.dbaccess.execuTenonQuery (INSSQL);
if (ligne> 0)
{
BS_USER User = new BS_USER ();
user.Unip = arr [3];
Factory.getUserbllinSistance (). LoginUnip (utilisateur);
String str = string.format ("location.href = 'myInformation.aspx? Unip = {0}'", arr [3]);
CSA.HC.COMMON.ECHOJS (STR);
}
}
}