3番目のプラットフォームログインインターフェイスのアプリケーションWebサイト:http://open.51094.com/
書類:
より多くの開発の友人を促進するために、私はサードパーティの共同ログインをサポートする市場のすべてのインターフェイスを特別に統合しました。複数の開発を必要としていたログインは、1回だけ完了することができます。レビューを待ってプロジェクトの進捗を遅らせる必要はありません。使いやすく、操作しやすい。以下は、このプラグインの特定の使用方法です。
1.最初にWebサイトhttp://open.51094.com/にログインします。
2。右上隅の[ログイン]ボタンをクリックしてログインします。ログインした後、マネジメントセンターに自動的にジャンプします。
3.管理センターに入った後、以下に示すように、[アプリケーションの作成]ボタンをクリックします。
4.「Webサイトアプリケーション」としてアプリケーションタイプを選択し、完了後、アプリケーション情報充填ページにジャンプします。
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以降、ユーザーを登録する2番目の方法を使用してください
プラン1(非推奨)
コールバックメソッド | 得る | |
コールバックURL | アプリケーションを申請するときに記入されたログインコールバックアドレス | |
コールバック形式 | http://url/user/hezuo.html?param =%7b%22name%22%3a%22oh%21no%22%2c%22Img%22%3a%22http%3a% 8927%5C%2F863A85B9B176E2408E05DF05D46FDB3F%5C%2F100%22%2C%22セックス%22%3A0%2C%22UNIQ%22%3A%22QO8HDWKMKPVI%22%22%22%22% | |
パラメーター | PARAMパラメーターコンテンツを取得した後、最初にURLデコードを行い、次にJSONデコードを実行して次のコンテンツを取得します。 | |
名前 | ログインしてユーザー名を取得します | |
IMG | アバターアドレス | |
セックス | 性別 | |
uniq | 第三者によって取得された唯一のコード | |
から | QQ、Weibo、Renrenなどのログインソース | |
計画2
http://test.open.51094.com/index.phpを参照してください
コールバックメソッド | 得る | |
コールバックURL | アプリケーションを申請するときに記入されたログインコールバックアドレス | |
コールバック形式 | http://url/user/hezuo.html?code = code | |
パラメーター | コードパラメーターコンテンツを取得した後、postメソッドを使用して次の要求を示します。 URL:http://open.51094.com/user/auth.html パラメーターの投稿: タイプ:get_user_info コード:返されたコード値 appid:適用されたappid値(Webページのアプリケーション名をクリックして取得) トークン:適用されたトークン値(Webページのアプリケーション名をクリックして取得) 情報はJSON文字列の形で返されます。情報を取得した後、json_decode($ str、true)は次のコンテンツを取得します。(取得方法の付録を参照) | |
名前 | ログインしてユーザー名を取得します | |
IMG | アバターアドレス | |
セックス | 性別 | |
uniq | 第三者によって取得された唯一のコード | |
から | 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');
define( 'token'、 '適用時に取得したトークン値');
?>
2.オープンクラスファイルopen51094.class.php
<?php
「open.config.php」を含める;
クラスOpen51094 {
プライベート$ appid;
プライベート$トークン;
プライベート$ return_uri;
プライベート$ access_token;
private $ url = 'http://open.51094.com/user/auth.html';
function __construct(){
$ this-> appid = appid;
$ this-> token = token;
}
function me($ code){
#$ this-> getAccessToken();
$ params = array(
'type' => 'get_user_info'、
「コード」=> $コード、
'appid' => $ this-> appid、
「トークン」=> $ this-> token
);
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、$ headers);
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);
$ json_rを返します。
}
}
?>
3.ページback.phpに戻ります
<?php
'open51094.class.php'を含める;
$ open = new open51094();
$ code = $ _get ['code'];
var_dump($ open-> me($ code));
?>
Javaは情報コードを取得します:
Import Java.util.date;
java.util.uuidをインポートします。
javax.servlet.http.httpservletrequestをインポートします。
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;
org.springframework.stereotype.controllerをインポートします。
@suppresswarnings( "serial")
@コントローラ
@scope( "Prototype")
public class userthirdpartyaction {
//サードパーティのプラットフォームが提供するパラメーター
private static string appid = "15 *********";
private static string token = "14 *********";
public string shuldlogin(){
httpservletrequest request = servletactioncontext.getRequest();
文字列code = checknull.check(request.getParameter( "code"));
system.out.println( "サードパーティログインは結果を返します:"+code);
if( ""。equals(code)|| null == code){
system.out.println( "コールバック関数は実行されません");
「失敗」を返します。
}それ以外{
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);
//分析結果
jsonobject jsonobj = new jsonobject(url);
//指定されたJSONキーオブジェクトの値オブジェクトを取得します
//カプセル化されたオブジェクトを解析します
「リダイレクト」を返します。
}
}
}
httprequetクラス:
パッケージwzh.http;
java.io.bufferedreaderをインポートします。
java.io.ioexceptionをインポートします。
java.io.inputStreamReaderをインポートします。
java.io.printwriterをインポートします。
java.net.urlをインポートします。
java.net.urlconnectionをインポートします。
java.util.listをインポートします。
java.util.mapをインポートします。
パブリッククラスhttprequest {/**
* GETメソッドのために指定されたURLにリクエストを送信します
*
* @param url
*リクエストを送信するURL
* @param param
*要求パラメーター、要求パラメーターはname1 = value1&name2 = value2の形式である必要があります。
* @return url応答結果
*/
public static string sendegt(string url、string param){文字列結果= "";
bufferedreader in = null;
試す {string urlnamestring = url + "?" + param;
url realurl = new url(urlnamestring);
// URLへの接続を開きます
urlconnection connection = realurr.openconnection();
//共通要求属性を設定します
connection.setRequestProperty( "Accept"、 "*/*");
connection.setRequestProperty( "Connection"、 "Keep-Alive");
connection.setRequestProperty( "user-agent"、
「Mozilla/4.0(互換; MSIE 6.0; Windows NT 5.1; SV1)」);
//実際の接続connection.connect();
//すべての応答ヘッダーフィールドを取得します
map <string、list <string >> map = connection.getheaderfields();
//すべての応答ヘッダーフィールドを繰り返します
for(string key:map.keyset()){System.out.println(key + " - >" + map.get(key));
}
// bufferedreader入力ストリームを定義して、URL応答を読み取る
in = new BufferedReader(new inputStreamReader(
connection.getInputStream()));
文字列線;
while((line = in.readline())!= null){結果 += line;
}
} catch(例外e){system.out.println( "get request!" + e)を送信するときに例外が発生しました);
e.printstacktrace();
}
//最後にブロックを使用して、入力ストリームを閉じます
ついに {試す { if(in!= null){in.close();
}
} catch(例外E2){e2.printstacktrace();
}
}
返品結果;
}
/**
*指定されたURLにPOSTメソッドのリクエストを送信します
*
* @param url
*リクエストを送信するURL
* @param param
*要求パラメーター、要求パラメーターはname1 = value1&name2 = value2の形式である必要があります。
* @return応答表現されたリモートリソースの結果
*/
public static string sendpost(string url、string param){printwriter out = null;
bufferedreader in = null;
文字列結果= "";
試す {url realurl = new url(url);
// URLへの接続を開きます
urlconnection conn = realur.openconnection();
//共通要求属性を設定します
conn.setRequestProperty( "Accept"、 "*/*");
conn.setRequestProperty( "Connection"、 "Keep-Alive");
conn.setRequestProperty( "user-agent"、
「Mozilla/4.0(互換; MSIE 6.0; Windows NT 5.1; SV1)」);
//次の2つの行を設定する必要がありますポストリクエストを送信する必要があります
conn.setDoOutput(true);
conn.setDoinput(true);
// urlconnectionオブジェクトに対応する出力ストリームを取得します
out = new PrintWriter(conn.getOutputStream());
//要求パラメーターを送信します
out.print(param);
//フラッシュ出力ストリームのバッファー
out.flush();
// bufferedreader入力ストリームを定義して、URL応答を読み取る
in = new BufferedReader(
new inputStreamReader(conn.getInputStream()));
文字列線;
while((line = in.readline())!= null){結果 += line;
}
} catch(例外e){System.out.println( "POSTリクエストを送信するときに例外が発生しました!" +e);
e.printstacktrace();
}
//最終的にブロックを使用して、出力ストリームと入力ストリームを閉じます
ついに{試す{ if(out!= null){out.close();
}
if(in!= null){in.close();
}
}
catch(ioException ex){ex.printstacktrace();
}
}
返品結果;
}
}
投稿の書き込みと読書方法を添付してください:
//価値のある方法を取得するために交換、投稿方法。
public static 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 = 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 = e383684d8f0acb39d62457f361dc1dc"、code);
// item.postdata = sbtemp.toString();
httpresult result = m_http.gethtml(item);
string resulthtml = result.html;
jobject obj = jobject.parse(resulthtml);
文字列名= obj ["name"]。toString();
string img = obj ["img"]。toString();
string sex = obj ["sex"]。toString();
string uniq = obj ["uniq"]。toString();
string from = obj ["from"]。toString();
情報= name + "@" + img + "@" + sex + "@" + uniq + "@" + from;
}
情報を返す;
}
//コードページを返すためにコードを受け入れます
//インターフェイスログイン
文字列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] ["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(user);
if(curinfo.curuser!= null)
{
levelname = curinfo.curuser.levelname;
name = curinfo.curuser.name;
sex = curinfo.curuser.sex;
pwd = curinfo.curuser.password;
img = curinfo.curuser.pic;
}
csa.hc.common.echojs( "location.href = 'myinformation.aspx'");
}
}
それ以外
{
//メンバーコードを生成します
string date = dateTime.now.toString( "ymdhmssffff");
string usercode = getTreenumrandomtop() + date + getTreenumrandomend();
文字列ip = httpcontext.current.request.userhostaddress;
string inssql = string.format(@"inserting to [bs_user]([code]、[username]、[levelname]、[realname]、[sex]、[pic]、[unip]、[password]、[fxip]、[fxip]))
値( '{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(row> 0)
{
bs_user user = new bs_user();
user.unip = arr [3];
Factory.getuserbllinstance()。loginunip(user);
string str = string.format( "location.href = 'myinformation.aspx?unip = {0}'"、arr [3]);
csa.hc.common.echojs(str);
}
}
}