El sitio web de la aplicación para la tercera interfaz de inicio de sesión de la plataforma: http://open.51094.com/
documento:
Para facilitar más amigos de desarrollo, he integrado especialmente todas las interfaces en el mercado que admiten el inicio de sesión conjunto de terceros. Iniciar sesión que solía requerir múltiples desarrollos ahora se puede completar en solo una vez. No hay necesidad de retrasar el progreso del proyecto esperando la revisión. Fácil de usar y fácil de operar. El siguiente es el método de uso específico de este complemento:
1. Primero inicie sesión en el sitio web http://open.51094.com/.
2. Haga clic en el botón "Iniciar sesión" en la esquina superior derecha para iniciar sesión. Después de iniciar sesión con éxito, saltará automáticamente al centro de administración.
3. Después de ingresar al centro de administración, haga clic en el botón Crear aplicación, como se muestra a continuación:
4. Seleccione el tipo de aplicación como "Aplicación del sitio web", y después de la finalización, salte a la página de llenado de información de la aplicación.
5. La página de llenado de información se muestra en la figura a continuación. Complete la información de la solicitud correctamente según sea necesario. Después de completar, haga clic en Crear aplicación para usarla.
Descripción del parámetro:
Nombre: La abreviatura de la aplicación
Detalles: Información de descripción de la aplicación, el número de palabras no debe ser inferior a 10 caracteres chinos
Iniciar sesión con éxito la dirección de devolución de llamada:
El solicitante recibe la URL de la información del usuario y notificamos al solicitante en el formato de los parámetros URL+?+. ¿Recuerdas que la URL que completa no puede contenerla?
Métodos de inicio de sesión compatibles:
Proporcione su propia elección, el valor predeterminado es seleccionar todo.
Crear un diagrama de aplicación
1. Puede ver la dirección JS que la aplicación necesita hacer referencia en el centro de administración del centro de usuarios, como se muestra en el cuadro rojo en la figura a continuación:
2. Agregue el siguiente código JS a la página en la que necesita iniciar sesión
<script type = "text/javascript" src = "http://open.51094.com/user/myscript/153dee5be21e2.html"> </script>
3. Agregar (<span id = "hzy_fast_login"> </span>) a la etiqueta de la página como se muestra en la siguiente figura
4. Después de unirse correctamente, puede ver el inicio de sesión correspondiente en la página de inicio de sesión. Como se muestra en la figura a continuación.
Utilice el segundo método para registrar a los usuarios después de 2014-11-1
Plan 1 (desaprobado)
Método de devolución de llamada | CONSEGUIR | |
URL de devolución de llamada | La dirección de devolución de llamada de inicio de sesión se completó al solicitar la solicitud | |
Formato de devolución de llamada | http: //url/user/hezuo.html? Param =%7b%22 Name%22%3A%22OH%21NO%22%2C%22Img%22%3A%22HTTP%3A%5C%2F%5C%2FQ.QLoGO.CN%5C%2FQQAPP%5C%2F10047 8927%5C%2F863A85B9B176E2408E05DF05D46FDB3F%5C%2F100%22%2C%22SEX%22%3A0%2C%22UniQ%22%3A%22QQO8HDWKMKPVI%22%2C% | |
parámetro | Después de obtener el contenido de parámetro de parámetro, primero decodifica la URL y luego realice una decodificación de JSON para obtener el siguiente contenido: | |
nombre | Inicie sesión para obtener el nombre de usuario | |
img | Dirección de avatar | |
sexo | género | |
uniq | El único código obtenido por un tercero | |
de | Fuentes de inicio de sesión como QQ, Weibo, Renren, etc. | |
Plan 2
Consulte: http://test.open.51094.com/index.php
Método de devolución de llamada | CONSEGUIR | |
URL de devolución de llamada | La dirección de devolución de llamada de inicio de sesión se completó al solicitar la solicitud | |
Formato de devolución de llamada | http: //url/user/hezuo.html? código = código | |
parámetro | Después de obtener el contenido del parámetro de código, use el método de publicación para solicitar: URL: http://open.51094.com/user/auth.html Publicar parámetros: Tipo: get_user_info Código: el valor del código devuelto APPID: el valor de Appid aplicado (haga clic en el nombre de la aplicación en la página web para obtener) Token: el valor del token aplicado (haga clic en el nombre de la aplicación en la página web para obtener) La información se devolverá en forma de una cadena JSON. Después de obtener la información, json_decode ($ str, true) obtendrá el siguiente contenido: (consulte el apéndice para el método de adquisición) | |
nombre | Inicie sesión para obtener el nombre de usuario | |
img | Dirección de avatar | |
sexo | género | |
uniq | El único código obtenido por un tercero | |
de | Fuentes de inicio de sesión como QQ, Weibo, Renren, etc. | |
Este complemento es un complemento gratuito y se puede utilizar con fines comerciales. Marque el desarrollador cuando lo use.
Notas sobre el uso:
1. El nombre de dominio de la página JS de referencia debe ser el mismo que el nombre de dominio de la dirección de devolución de llamada al aplicar.
2. La etiqueta con id = 'hzy_fast_login' debe agregarse a la página después de la js referenciada.
3. ¿No se permite que aparezca la URL de devolución de llamada solicitada?
Conjunto de código de error:
Código de error | pregunta |
10001 | Error de aplicación de usuario |
10002 | El token no coincide con el appid |
10003 | El nombre de dominio solicitado no coincide con el nombre de dominio registrado (hay una dirección de devolución de llamada para determinar el nombre de dominio registrado) |
se acabó el tiempo | Iniciar sesión en el tiempo de espera, necesito iniciar sesión nuevamente |
apéndice:
PHP obtiene código de información: código fuente http://test.open.51094.com/index.php
1. Archivo de configuración Open.config.php
contenido:
<? Php
/**
*@ Dirección registrada http://open.51094.com
*@ QQ Communication Group: 373703921
*@ Dirección del blog: http://www.51094.com
*@ Dirección de prueba: http://open.51094.com/user/login.html
*
*@ autor: [email protected]
*
**/
definir ('appid', 'appid obtenido al aplicar');
definir ('token', 'valor de token obtenido al aplicar');
?>
2. Open Class File Open51094.class.php
<? Php
incluir 'Open.config.php';
clase Open51094 {
Privado $ appid;
token privado $;
privado $ return_uri;
privado $ access_token;
privado $ url = 'http://open.51094.com/user/auth.html';
función __construct () {
$ this-> appid = appid;
$ this-> token = token;
}
Function me ($ código) {
#$ this-> getAccessToken ();
$ params = array (
'type' => 'get_user_info',
'Código' => $ Código,
'appid' => $ this-> appid,
'Token' => $ this-> Token
);
devolver $ this-> http ($ params);
}
función privada http ($ postfields = '', $ método = 'post', $ headers = array ()) {
$ ci = curl_init ();
curl_setopt ($ ci, curlopt_ssl_verifypeer, falso);
curl_setopt ($ ci, curlopt_returntransfer, 1);
curl_setopt ($ ci, curlopt_connecttimeout, 30);
curl_setopt ($ ci, curlopt_timeout, 30);
if ($ método == 'post') {
curl_setopt ($ ci, curlopt_post, true);
if ($ postfields! = '') curl_setopt ($ ci, curlopt_postfields, $ postfields);
}
$ Headers [] = "User-agent: 51094php (Open.51094.com)";
curl_setopt ($ ci, curlopt_httpheader, $ encabezados);
curl_setopt ($ ci, curlopt_url, $ this-> url);
$ respuesta = curl_exec ($ ci);
curl_close ($ ci);
$ json_r = array ();
if (! vacía ($ respuesta)) $ json_r = json_decode ($ respuesta, true);
devolver $ json_r;
}
}
?>
3. Regrese a la página de regreso.php
<? Php
incluir 'Open51094.class.php';
$ Open = new Open51094 ();
$ código = $ _get ['código'];
var_dump ($ open-> me ($ código));
?>
Java obtiene código de información:
import java.util.date;
import java.util.uuid;
import javax.servlet.http.httpservletRequest;
import javax.servlet.http.httpservletResponse;
importar org.apache.struts2.servletactionContext;
importar org.json.jsonObject;
importar org.springframework.beans.factory.annotation.aUtowired;
importar org.springframework.context.annotation.scope;
importar org.springframework.stereotype.controller;
@SupessWarnings ("Serial")
@Controlador
@Scope ("Prototipo")
clase pública userThirdPartyaction {
// Parámetros proporcionados por plataformas de terceros
String static privado appid = "15 *********";
Token de cadena estática privada = "14 *********";
Public String ThirdLogin () {
HttpservletRequest request = servletactionContext.getRequest ();
Código de cadena = checkNull.check (request.getParameter ("código"));
System.out.println ("El inicio de sesión de terceros devuelve el resultado:"+código);
if ("". Equals (código) || null == código) {
System.out.println ("La función de devolución de llamada no se ejecuta");
devolver "fallas";
}demás{
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);
// Resultados de análisis
JSONOBJECT JSONOBJ = new JsonObject (URL);
// Obtener el objeto de valor del objeto de clave JSON especificado
// Objeto encapsulado
regresar "redirección";
}
}
}
Clase de httprequet:
paquete wzh.http;
import java.io.bufferedReader;
import java.io.ioException;
import java.io.inputstreamreader;
import java.io.printwriter;
import java.net.url;
import java.net.urlconnection;
import java.util.list;
import java.util.map;
clase pública httprequest {/**
* Envíe una solicitud a la URL especificada para obtener el método GET
*
* @param url
* La URL para enviar la solicitud
* @param param
* Parámetros de solicitud, los parámetros de solicitud deben estar en forma de nombre1 = value1 & name2 = value2.
* @Return URL Resultados de respuesta para el recurso remoto representado por
*/
public static string sendget (string url, string param) {Resultado de cadena = "";
BufferedReader en = NULL;
intentar {String urlnamestring = url + "?" + Param;
Url realUrl = nueva url (urlamestring);
// Abra la conexión a la URL
URLConnection Connection = RealUrl.openconnection ();
// Establecer atributos de solicitud común
Connect.SetRequestProperty ("Aceptar", "*/*"); conexión.setRequestProperty ("Conexión", "Keep-Alive"); Connection.SetRequestProperty ("User-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
// crear una conexión real de conexión.connect ();
// Obtener todos los campos de encabezado de respuesta
MAP <String, List <String>> MAP = Connection.GetheaderFields ();
// iterar a través de todos los campos de encabezado de respuesta
para (clave de cadena: map.keyset ()) {System.out.println (Key + "->" + Map.get (Key));
}
// Defina la secuencia de entrada de BufferedReader para leer la respuesta de la URL
in = new BufferedReader (New InputStreamReader (
Connection.getInputStream ()));
Línea de cadena;
while ((line = in.readline ())! = null) {resultado += línea;
}
} Catch (Exception e) { System.out.println ("La excepción ocurrió al enviar la solicitud GET!" + E);E.PrintStackTrace ();
}
// Use finalmente bloques para cerrar la secuencia de entrada
Finalmente { intentar { if (in! = null) {cercar();
}
} capt (excepción e2) {E2.PrintStackTrace ();
}
}
resultado de retorno;
}
/**
* Enviar una solicitud de método de publicación a la URL especificada
*
* @param url
* La URL para enviar la solicitud
* @param param
* Parámetros de solicitud, los parámetros de solicitud deben estar en forma de nombre1 = value1 & name2 = value2.
* @return Resultado de respuesta del recurso remoto representado
*/
public static string sendPost (string url, string param) {PrintWriter out = null;
BufferedReader en = NULL;
Resultado de cadena = "";
intentar {URL realURL = nueva URL (URL);
// Abra la conexión a la URL
Urlconnection conn = realUrl.openconnection ();
// Establecer atributos de solicitud común
conn.setRequestProperty ("Aceptar", "*/*"); conn.setRequestProperty ("Conexión", "mantener alive"); Conn.setRequestProperty ("agente de usuario","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
// Las siguientes dos líneas deben establecerse para enviar una solicitud de publicación
Conn.setDoOutput (verdadero);
Conn.setDoInput (verdadero);
// Obtener la secuencia de salida correspondiente al objeto URLConnection
out = new PrintWriter (conn.getOutputStream ());
// Enviar parámetros de solicitud
out.print (param);
// buffer de flujo de salida de descarga
out.flush ();
// Defina la secuencia de entrada de BufferedReader para leer la respuesta de la URL
in = nuevo BufferedReader (
nuevo InputStreamReader (conn.getInputStream ()));
Línea de cadena;
while ((line = in.readline ())! = null) {resultado += línea;
}
} Catch (Exception e) { System.out.println ("La excepción ocurrió al enviar solicitudes posteriores!" +E);E.PrintStackTrace ();
}
// Use finalmente bloques para cerrar la secuencia de salida y la secuencia de entrada
Finalmente{ intentar{ if (out! = null) {out.close ();
}
if (in! = null) {cercar();
}
}
Catch (ioException ex) {Ex.PrintStackTrace ();
}
}
resultado de retorno;
}
}
Adjunte el método de escritura y lectura de publicaciones:
// intercambio para obtener el método digno, el método post;
Public static string Iniciar sesión (código de cadena)
{
String info = string.empty;
if (código! = "" && 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", código);
// item.postdata = sbtemp.toString ();
HttPresult date = m_http.gethtml (item);
cadena resulthtml = resultado.html;
Jobject obj = Jobject.Parse (ResulThtml);
name de cadena = obj ["nombre"]. toString ();
cadena img = obj ["img"]. toString ();
String Sex = obj ["sexo"]. toString ();
cadena uniq = obj ["uniq"]. toString ();
cadena de = obj ["de"]. toString ();
info = name + "@" + img + "@" + sexy + "@" + uniq + "@" + desde;
}
Información de retorno;
}
// Acepta el código para devolver la página del código
// Iniciar sesión
Código de cadena = request ["código"];
cadena [] arr = publicLogin.login (código) .split ('@');
if (arr.length == 5)
{
cadena unip = arr [3];
string sql = string.format ("select * de bs_user donde unip = '{0}'", unip);
if (csa.dal.dbaccess.getrs (sql) .rows.count> 0)
{
if (csa.dal.dbaccess.getrs (sql) .rows [0] ["contraseña"]. tostring () == "" || csa.dal.dbaccess.getrs (sql) .rows [0] ["contraseña"] == null)
{
String Str = String.Format ("Ubicación.href = 'MyInformation.aspx? Unip = {0}'", arr [3]);
Csa.hc.common.ecojs (str);
}
demás
{
Bs_user user = new BS_USer ();
user.unip = unip;
Factory.getUserBllinStance (). Loginunip (usuario);
if (curinfo.curuser! = null)
{
nivelname = curinfo.curuser.levelName;
nombre = curinfo.curuser.name;
sexo = curinfo.curuser.sex;
pwd = curinfo.curuser.password;
img = curinfo.curuser.pic;
}
CSA.HC.COMMON.ECHOJS ("LOCACE.HREF = 'MYINFORMATION.ASPX'");
}
}
demás
{
// Generar código miembro
string date = dateTime.Now.ToString ("ymdhmssffff");
String UserCode = getTreenumRandomTop () + date + getTreenumRandomend ();
cadena ip = httpcontext.current.request.userhostaddress;
String inssql = string.format (@"inserte en [bs_user] ([código], [username], [nivelname], [realName], [sexo], [pic], [unip], [contraseña], [teléfono], [fxip])
Valores ('' {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.ennpt.getMd5 ("123456"), "fkt_" + usercode.substring (3, 8), ip);
int fila = csa.dal.dbaccess.executenQuery (inssql);
if (fila> 0)
{
Bs_user user = new BS_USer ();
user.unip = arr [3];
Factory.getUserBllinStance (). Loginunip (usuario);
String Str = String.Format ("Ubicación.href = 'MyInformation.aspx? Unip = {0}'", arr [3]);
Csa.hc.common.ecojs (str);
}
}
}