세 번째 플랫폼 로그인 인터페이스의 응용 프로그램 웹 사이트 : http://open.51094.com/
문서:
더 많은 개발 친구를 촉진하기 위해 타사 공동 로그인을 지원하는 시장의 모든 인터페이스를 특별히 통합했습니다. 여러 개발이 필요한 로그인은 이제 한 번만 완료 할 수 있습니다. 검토를 기다리면 프로젝트의 진행 상황을 지연시킬 필요가 없습니다. 사용하기 쉽고 작동하기 쉽습니다. 다음은이 플러그인의 특정 사용 방법입니다.
1. 먼저 웹 사이트 http://open.51094.com/에 로그인하십시오.
2. 오른쪽 상단의 "로그인"버튼을 클릭하여 로그인합니다. 성공적으로 로그인하면 자동으로 관리 센터로 이동합니다.
3. 관리 센터에 들어간 후 아래와 같이 응용 프로그램 작성 버튼을 클릭하십시오.
4. "웹 사이트 응용 프로그램"으로 응용 프로그램 유형을 선택하고 완료 후 응용 프로그램 정보 작성 페이지로 이동하십시오.
5. 정보 작성 페이지는 아래 그림에 나와 있습니다. 필요에 따라 응용 프로그램 정보를 올바르게 작성하십시오. 완료 후 응용 프로그램 작성을 클릭하여 사용하십시오.
매개 변수 설명 :
이름 : 응용 프로그램의 약어
세부 사항 : 응용 프로그램 설명 정보, 단어 수는 10 명 이상이어야합니다.
로그인이 성공적으로 콜백 주소 :
신청자는 사용자 정보의 URL을 수신하고 신청자에게 URL+?+ 매개 변수 형식으로 통지합니다. 당신이 작성하는 URL에 포함 할 수 없다는 것을 기억하십니까?
지원되는 로그인 방법 :
자신의 선택을 제공하십시오. 기본값은 모두를 선택하는 것입니다.
응용 프로그램 다이어그램을 만듭니다
1. 아래 그림의 빨간색 상자에 표시된 것처럼 응용 프로그램이 사용자 센터의 관리 센터에서 참조 해야하는 JS 주소를 볼 수 있습니다.
2. 로그인 해야하는 페이지에 다음 JS 코드를 추가하십시오.
<script type = "text/javaScript"src = "http://open.51094.com/user/myscript/153dee5be21e2.html"> </script>
3. 다음 그림과 같이 페이지 태그에 (<span id = "hzy_fast_login"> </span>) 추가
4. 성공적으로 가입 한 후 로그인 페이지에서 해당 로그인을 볼 수 있습니다. 아래 그림과 같이.
2014-11-1 이후에 사용자를 등록하는 두 번째 방법을 사용하십시오.
계획 1 (더 이상 사용되지 않음)
콜백 메소드 | 얻다 | |
콜백 URL | 응용 프로그램을 신청할 때 채워진 로그인 콜백 주소 | |
콜백 형식 | 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%5c%5c%5c%5c%5c%5c% 8927%5C%2F863A85B9B176E2408E05DF05D46FDB3F%5C%2F100%22%2C%22SEX%22%3A0%2C%22UNIQ%22%3A%22QO8HDWKMKPVI%22FROM%22A%22Q%22FROM% | |
매개 변수 | Param Parameter 컨텐츠를 얻은 후 먼저 URL 디코딩을 수행 한 다음 JSON 디코딩을 수행하여 다음 컨텐츠를 얻습니다. | |
이름 | 사용자 이름을 얻으려면 로그인하십시오 | |
IMG | 아바타 주소 | |
섹스 | 성별 | |
uniq | 제 3자가 얻은 유일한 코드 | |
~에서 | QQ, Weibo, Renren 등과 같은 로그인 소스 등 | |
계획 2
http://test.open.51094.com/index.php를 참조하십시오
콜백 메소드 | 얻다 | |
콜백 URL | 응용 프로그램을 신청할 때 채워진 로그인 콜백 주소 | |
콜백 형식 | http : //url/user/hezuo.html? code = code | |
매개 변수 | 코드 매개 변수 컨텐츠를 얻은 후 게시 메소드를 사용하여 요청하십시오. URL : http://open.51094.com/user/auth.html 게시물 매개 변수 : 유형 : get_user_info 코드 : 반환 된 코드 값 Appid : Appid 값이 적용됩니다 (얻으려면 웹 페이지의 응용 프로그램 이름을 클릭하십시오) 토큰 : 적용된 토큰 값 (얻으려면 웹 페이지의 응용 프로그램 이름을 클릭하십시오) 정보는 JSON 문자열 형태로 반환됩니다. 정보를 얻은 후 JSON_DECODE ($ str, true)는 다음 내용을 얻습니다. (획득 방법의 부록 참조) | |
이름 | 사용자 이름을 얻으려면 로그인하십시오 | |
IMG | 아바타 주소 | |
섹스 | 성별 | |
uniq | 제 3자가 얻은 유일한 코드 | |
~에서 | QQ, Weibo, Renren 등과 같은 로그인 소스 등 | |
이 플러그인은 무료 플러그인이며 상업용 목적으로 사용할 수 있습니다. 개발자를 사용할 때 개발자를 표시하십시오.
사용에 대한 메모 :
1. 참조 js 페이지의 도메인 이름은 적용 할 때 콜백 주소의 도메인 이름과 동일해야합니다.
2. id = 'hzy_fast_login'이있는 태그는 참조 된 JS 후에 페이지에 추가해야합니다.
3. 요청 된 콜백 URL에 나타나지 않습니까?
오류 코드 세트 :
오류 코드 | 질문 |
10001 | 사용자 APPID 오류 |
10002 | 토큰은 appid와 일치하지 않습니다 |
10003 | 요청 된 도메인 이름은 등록 된 도메인 이름과 일치하지 않습니다 (등록 된 도메인 이름을 결정하기위한 콜백 주소가 있습니다) |
타임 아웃 | 로그인 시간이 초과되고 다시 로그인해야합니다 |
충수:
PHP는 정보 코드를 얻습니다. 소스 코드 http://test.open.51094.com/index.php
1. 구성 파일 Open.config.php
콘텐츠:
<? php
/**
*@ 등록 주소 http://open.51094.com
*@ QQ 커뮤니케이션 그룹 : 373703921
*@ 블로그 주소 : http://www.51094.com
*@ 테스트 주소 : http://open.51094.com/user/login.html
*
*@ 저자 : [email protected]
*
**/
define ( 'appid', 'appid를 적용 할 때 얻었습니다');
정의 ( '토큰', '적용 할 때 얻은 토큰 값');
?>
2. 열린 클래스 파일 Open51094.class.php
<? php
'Open.config.php'포함;
클래스 Open51094 {
개인 $ appid;
개인 $ 토큰;
Private $ return_uri;
개인 $ access_token;
private $ url = 'http://open.51094.com/user/auth.html';
함수 __construct () {
$ this-> appid = appid;
$ this-> 토큰 = 토큰;
}
Me ($ Code) {
#$ this-> getAccessToken ();
$ params = 배열 (
'type'=> 'get_user_info',
'코드'=> $ 코드,
'appid'=> $ this-> appid,
'토큰'=> $ this-> 토큰
);
return $ this-> http ($ params);
}
개인 기능 http ($ postfields = '', $ method = '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 ($ method == '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, $ 헤더);
curl_setopt ($ ci, curlopt_url, $ this-> url);
$ response = curl_exec ($ ci);
curl_close ($ ci);
$ json_r = array ();
if (! empty ($ response)) $ json_r = json_decode ($ response, true);
return $ json_r;
}
}
?>
3. 페이지로 돌아 가기 .php
<? php
'Open51094.class.php';
$ Open = New Open51094 ();
$ code = $ _get [ 'code'];
var_dump ($ Open-> ME ($ Code));
?>
Java는 정보 코드를 얻습니다.
import java.util.date;
java.util.uuid import;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import org.apache.struts2.servletactionContext;
import org.json.jsonobject;
org.springframework.beans.factory.annotation.autowired;
import org.springframework.context.annotation.scope;
org.springframework.stereotyp.controller import;
@Suppresswarnings ( "Serial")
@제어 장치
@Scope ( "프로토 타입")
공개 클래스 사용자 ThirdPartyAction {
// 타사 플랫폼에서 제공하는 매개 변수
개인 정적 문자열 appid = "15 *********";
개인 정적 문자열 토큰 = "14 *********";
공개 문자열 ThirdLogin () {
httpservletrequest 요청 = servletactionContext.getRequest ();
문자열 code = checknull.check (request.getParameter ( "code"));
System.out.println ( "타사 로그인은 결과 :"+code);
if ( "". equals (code) || null == code) {
System.out.println ( "콜백 함수가 실행되지 않음");
"실패"를 반환합니다.
}또 다른{
문자열 URL = httprequest.sendpost ( "http://open.51094.com/user/auth.html", "type = get_user_info & code ="+code+"& appid ="+appid+"& token ="+token+"");
System.out.println (URL);
// 분석 결과
jsonobject jsonobj = new jsonobject (url);
// 지정된 JSON 키 객체의 값 객체 가져 오기
// 캡슐화 된 객체를 구문 분석합니다
"리디렉션"을 반환합니다.
}
}
}
httprequet 클래스 :
패키지 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;
Java.util.list 가져 오기;
java.util.map import;
공개 클래스 httprequest {/**
* GET 메소드에 대한 지정된 URL에 요청을 보내십시오.
*
* @param url
* 요청을 보낼 URL
* @param param
* 요청 매개 변수, 요청 매개 변수는 name1 = value1 & name2 = value2의 형식이어야합니다.
* @return URL 응답 결과가 표시된 원격 리소스의 응답 결과
*/
public static string sendget (String URL, String param) {문자열 결과 = "";
버퍼드 리더 in = null;
노력하다 {문자열 urlnamestring = url + "?" + PARAM;
url realurl = new URL (urlnamestring);
// URL에 대한 연결을 엽니 다
urlConnection Connection = realUrl.openConnection ();
// 공통 요청 속성을 설정합니다
Connection.setRequestProperty ( "accept", "*/*");
Connection.setRequestProperty ( "Connection", "Keep-Alive");
Connection.setRequestProperty ( "사용자 에이전트",
"Mozilla/4.0 (호환 가능; MSIE 6.0; Windows NT 5.1; SV1)");
// 실제 연결을 만듭니다. connection.connect ();
// 모든 응답 헤더 필드를 가져옵니다
map <string, list <string >> map = connection.getheaderFields ();
// 모든 응답 헤더 필드를 반복합니다
for (문자열 키 : map.keyset ()) {System.out.println (key + "->" + map.get (key));
}
// URL 응답을 읽으려면 BufferedReader 입력 스트림 정의
in = new bufferedReader (new inputStreamReader (
Connection.getInputStream ()));
문자열 라인;
while ((line = in.readline ())! = null) {결과 += 선;
}
} catch (예외 e) {System.out.println ( "get request!" + e)를 보낼 때 예외가 발생했습니다.
e.printstacktrace ();
}
// 결국 블록을 사용하여 입력 스트림을 닫습니다
마지막으로 { 노력하다 { if (in! = null) {넣다();
}
} catch (예외 e2) {e2.printstacktrace ();
}
}
반환 결과;
}
/**
* 지정된 URL에 포스트 메소드 요청 보내기
*
* @param url
* 요청을 보낼 URL
* @param param
* 요청 매개 변수, 요청 매개 변수는 name1 = value1 & name2 = value2의 형식이어야합니다.
* 원격 자원의 @return 응답 결과
*/
public static string sendpost (String URL, String param) {printwriter out = null;
버퍼드 리더 in = null;
문자열 결과 = "";
노력하다 {url realurl = new URL (url);
// URL에 대한 연결을 엽니 다
urlConnection conn = realurl.openConnection ();
// 공통 요청 속성을 설정합니다
Conn.setRequestProperty ( "accept", "*/*");
Conn.setRequestProperty ( "Connection", "Keep-Alive");
Conn.setRequestProperty ( "사용자 에이전트",
"Mozilla/4.0 (호환 가능; MSIE 6.0; Windows NT 5.1; SV1)");
// 후 요청을 보내려면 다음 두 줄을 설정해야합니다.
conn.setdooutput (true);
conn.setdoinput (true);
// URLConnection 객체에 해당하는 출력 스트림 가져 오기
out = new printwriter (conn.getoutPutStream ());
// 요청 매개 변수를 보냅니다
out.print (param);
// 플러시 출력 스트림의 버퍼
out.flush ();
// URL 응답을 읽으려면 BufferedReader 입력 스트림 정의
in = new bufferedReader (
new inputStreamReader (conn.getInputStream ());
문자열 라인;
while ((line = in.readline ())! = null) {결과 += 선;
}
} catch (예외 e) {System.out.println ( "사후 요청을 보낼 때 예외가 발생했습니다!" +e);
e.printstacktrace ();
}
// 마침내 블록을 사용하여 출력 스트림 및 입력 스트림을 닫습니다.
마지막으로{ 노력하다{ if (out! = null) {out.close ();
}
if (in! = null) {넣다();
}
}
캐치 (ioexception ex) {ex.printstacktrace ();
}
}
반환 결과;
}
}
게시물 작성 및 읽기 방법 첨부 :
// 합당한 방법, 사후 방법을 얻기 위해 교환;
공개 정적 문자열 로그인 (문자열 코드)
{
문자열 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 = encoding.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 (항목);
문자열 resulthtml = result.html;
jobject obj = jobject.parse (resulthtml);
문자열 이름 = obj [ "이름"]. ToString ();
문자열 img = obj [ "img"]. toString ();
문자열 sex = obj [ "sex"]. tostring ();
문자열 uniq = obj [ "uniq"]. toString ();
string from = obj [ "from"]. toString ();
info = name + "@" + img + "@" + sex + "@" + uniq + "@" + from;
}
반품 정보;
}
// 코드 페이지를 반환하려면 코드를 수락합니다
// 인터페이스 로그인
문자열 코드 = 요청 [ "코드"];
문자열 [] arr = publiclogin.login (코드) .split ( '@');
if (arr.length == 5)
{
문자열 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] [ "password"]. tostring () == ""|| csa.dal.dbaccess.getrs (sql) .rows [0] [ "password"] == null).
{
String str = string.format ( "location.href = 'myInformation.aspx? unip = {0}'", arr [3]);
csa.hc.common.echojs (str);
}
또 다른
{
bs_user user = new bs_user ();
user.unip = unip;
Factory.getUserBllinstance (). loginUnip (사용자);
if (curinfo.curuser! = null)
{
levelName = curinfo.curuser.levelName;
이름 = curinfo.curuser.name;
sex = curinfo.curuser.sex;
pwd = curinfo.curuser.password;
img = curinfo.curuser.pic;
}
csa.hc.common.echojs ( "location.href = 'myinformation.aspx'");
}
}
또 다른
{
// 멤버 코드를 생성합니다
문자열 날짜 = datetime.now.tostring ( "ymdhmssffff");
문자열 usercode = gettreenumrandomTop () + date + gettreenumrandomend ();
문자열 ip = httpcontext.current.request.userhostaddress;
String inssql = string.format (@"[bs_user] ([code], [username], [levelname], [realName], [sex], [pic], [unip], [password], [phone], [fxip])에 삽입합니다.
값 ( '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}') ")", uscode, arr [0] .trim ( ' "' '' '' '' '' ') 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 (행> 0)
{
bs_user user = new bs_user ();
user.unip = arr [3];
Factory.getUserBllinstance (). loginUnip (사용자);
String str = string.format ( "location.href = 'myInformation.aspx? unip = {0}'", arr [3]);
csa.hc.common.echojs (str);
}
}
}