موقع التطبيق لواجهة تسجيل الدخول إلى النظام الأساسي الثالث: 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/153dee5bebe21e2.html"> </script>
3. إضافة (<span id = "hzy_fast_login"> </span>) إلى علامة الصفحة كما هو موضح في الشكل التالي
4. بعد الانضمام بنجاح ، يمكنك رؤية تسجيل الدخول المقابل على صفحة تسجيل الدخول. كما هو مبين في الشكل أدناه.
يرجى استخدام الطريقة الثانية لتسجيل المستخدمين بعد 2014-11-1
الخطة 1 (تم إهمالها)
طريقة رد الاتصال | يحصل | |
URL رد الاتصال | تم ملء عنوان رد الاتصال تسجيل الدخول عند التقدم للتطبيق | |
تنسيق رد الاتصال | http: //url/user/hezuo.html؟ param = ٪ 7B ٪ 22name ٪ 22 ٪ 22 22OH ٪ 21no ٪ 22c ٪ 22IMG ٪ 22 ٪ 3A ٪ 22HTTP ٪ 3A ٪ 5C 2F ٪ 5C ٪ 2FQ.QLOGO.CN ٪ 5C 8927 ٪ 5C ٪ 2F863A85B9B176E2408E05DF05D46FDB3F ٪ 5C ٪ 2F100 22 ٪ 2C ٪ 22SEX ٪ 22 ٪ 2C ٪ 2C ٪ 22UNIQ ٪ 22 ٪ 3A 22QQO8HDWKMKPVI ٪ 22 ٪ 2C ٪ 22FROM 2CQ 2 | |
المعلمة | بعد الحصول على محتوى معلمة Param ، قم بفك تشفير URL أولاً ، ثم إجراء فك تشفير JSON للحصول على المحتوى التالي: | |
اسم | تسجيل الدخول للحصول على اسم المستخدم | |
IMG | عنوان الصورة الرمزية | |
الجنس | جنس | |
Uniq | الرمز الوحيد الذي حصل عليه طرف ثالث | |
من | مصادر تسجيل الدخول مثل 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 | الرمز الوحيد الذي حصل عليه طرف ثالث | |
من | مصادر تسجيل الدخول مثل 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 الخاص ؛
رمز $ الخاص ؛
$ $ return_uri ؛
خاص $ Access_Token ؛
$ url $ = 'http://open.51094.com/user/auth.html' ؛
وظيفة __construct () {
$ this-> appid = appid ؛
$ this-> token = token ؛
}
وظيفة لي (رمز $) {
#$ this-> getAccessToken () ؛
$ params = صفيف (
'type' => 'get_user_info' ،
"الرمز" => رمز $ ،
'appid' => $ this-> appid ،
"الرمز المميز" => $ this-> الرمز المميز
) ؛
إرجاع $ 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-ogent: 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 (! فارغة ($ response)) $ JSON_R = JSON_DECODE ($ response ، true) ؛
إرجاع $ JSON_R ؛
}
}
؟>
3. العودة إلى الصفحة back.php
<؟ PHP
تشمل "Open51094.class.php" ؛
$ open = new Open51094 () ؛
رمز $ = $ _get ['code'] ؛
var_dump ($ open-> me ($ code)) ؛
؟>
جافا تحصل على رمز المعلومات:
استيراد java.util.date ؛
استيراد java.util.uuid ؛
استيراد javax.servlet.http.httpservletrequest ؛
استيراد javax.servlet.http.httpservletresponse ؛
استيراد org.apache.struts2.ServleTActionContext ؛
استيراد org.json.jsonobject ؛
استيراد org.springframework.beans.factory.annotation.autowired ؛
استيراد org.springframework.context.annotation.scope ؛
استيراد org.springframework.stereotype.controller ؛
suppressWarnings ("Serial")
controller
scope ("النموذج الأولي")
الفئة العامة userthirdpartyaction {
// المعلمات التي توفرها منصات الطرف الثالث
سلسلة ثابتة appid = "15 *********" ؛
Token static static static = "14 *********" ؛
السلسلة العامة Thirdlogin () {
httpservletrequest request = servleTactionContext.getRequest () ؛
رمز السلسلة = checknull.check (request.getParameter ("Code")) ؛
System.out.println ("إرجاع تسجيل الدخول إلى الطرف الثالث النتيجة:"+رمز) ؛
if ("". يساوي (رمز) || null == رمز) {
System.out.println ("لا يتم تنفيذ وظيفة رد الاتصال") ؛
العودة "فشل" ؛
}آخر{
url 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 المحدد
// parse كائن مغلف
إعادة "إعادة التوجيه" ؛
}
}
}
فئة 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 {/**
* أرسل طلبًا إلى عنوان URL المحدد للحصول على طريقة GET
*
* param url
* عنوان URL لإرسال الطلب
* param param
* معلمات الطلب ، يجب أن تكون معلمات الطلب في نموذج name1 = value1 & name2 = value2.
* نتائج استجابة عنوان URL للعودة للمورد البعيد الممثل
*/
سلسلة ثابتة عامة SENSGET (url url ، String Param) {نتيجة السلسلة = "" ؛
BufferedReader في = فارغة ؛
يحاول {سلسلة urlnamestring = url + "؟"؟ + param ؛
url realurl = url جديد (urlnamestring) ؛
// افتح الاتصال بعنوان URL
اتصال urlConnection = realurl.openconnection () ؛
// تعيين سمات الطلب المشترك
connection.setRequestProperty ("قبول" ، "*/*") ؛ connection.setRequestProperty ("connection" ، "keep-alive") ؛ Connection.SetRequestProperty ("عامل المستخدم" ،"Mozilla/4.0 (متوافق ؛ MSIE 6.0 ؛ Windows NT 5.1 ؛ SV1)") ؛
// إنشاء اتصال فعلي connection.connect () ؛
// احصل على جميع حقول رأس الاستجابة
خريطة <string ، قائمة <Tring>> map = connection.getheaderfields () ؛
// تكرار من خلال جميع حقول رأس الاستجابة
لـ (مفتاح السلسلة: map.keyset ()) {System.out.println (key + "->" + map.get (key)) ؛
}
// تحديد دفق إدخال BufferredReader لقراءة استجابة عنوان URL
في = جديد BufferedReader (New InportStreamReader (
connection.getInputStream ())) ؛
خط السلسلة
بينما ((line = in.readline ())! = null) {النتيجة += الخط ؛
}
} catch (استثناء e) { system.out.println ("حدث استثناء عند إرسال طلب الحصول على!" + e) ؛E.PrintStackTrace () ؛
}
// استخدم الكتل أخيرًا لإغلاق دفق الإدخال
أخيراً { يحاول { إذا (في! = فارغ) {in.close () ؛
}
} catch (استثناء e2) {e2.printStackTrace () ؛
}
}
نتيجة العودة
}
/**
* إرسال طلب للحصول على طريقة البريد إلى عنوان URL المحدد
*
* param url
* عنوان URL لإرسال الطلب
* param param
* معلمات الطلب ، يجب أن تكون معلمات الطلب في نموذج name1 = value1 & name2 = value2.
* return استجابة نتيجة المورد البعيد ممثلة
*/
السلسلة الثابتة العامة sendpost (url url string ، string param) {printWriter Out = null ؛
BufferedReader في = فارغة ؛
نتيجة السلسلة = "" ؛
يحاول {url realurl = url جديد (url) ؛
// افتح الاتصال بعنوان URL
urlConnection conn = realurl.openconnection () ؛
// تعيين سمات الطلب المشترك
Conn.SetRequestProperty ("قبول" ، "*/*") ؛ Conn.SetRequestProperty ("connection" ، "keep-alive") ؛ Conn.SetRequestProperty ("عامل المستخدم" ،"Mozilla/4.0 (متوافق ؛ MSIE 6.0 ؛ Windows NT 5.1 ؛ SV1)") ؛
// يجب تعيين السطرين التاليين لإرسال طلب نشر
conn.setDooutput (صواب) ؛
conn.setDoInput (صواب) ؛
// احصل على دفق الإخراج المقابل لكائن urlconnection
out = new printWriter (conn.getOutputStream ()) ؛
// إرسال معلمات الطلب
out.print (param) ؛
// المخزن المؤقت من دفق الإخراج التدفق
out.flush () ؛
// تحديد دفق إدخال BufferredReader لقراءة استجابة عنوان URL
في = جديد BufferedReader (
new inputStreamReader (conn.getInputStream ())) ؛
خط السلسلة
بينما ((line = in.readline ())! = null) {النتيجة += الخط ؛
}
} catch (استثناء e) { System.out.println ("حدث استثناء عند إرسال طلب البريد!" +e) ؛E.PrintStackTrace () ؛
}
// استخدم الكتل أخيرًا لإغلاق دفق الإخراج ودفق الإدخال
أخيراً{ يحاول{ if (out! = null) {out.close () ؛
}
إذا (في! = فارغ) {in.close () ؛
}
}
catch (ioException ex) {ex.printStackTrace () ؛
}
}
نتيجة العودة
}
}
إرفاق طريقة الكتابة والقراءة بعد ما:
// التبادل للحصول على الطريقة الجديرة ، طريقة ما بعد ؛
تسجيل دخول السلسلة الثابتة العامة (رمز السلسلة)
{
معلومات السلسلة = string.empty ؛
إذا (رمز! = "" && الكود! = فارغ)
{
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 (item) ؛
سلسلة resulthtml = result.html ؛
Jobject OBJ = Jobject.parse (resulthtml) ؛
اسم السلسلة = obj ["name"]. toString () ؛
سلسلة img = obj ["img"]. toString () ؛
سلسلة الجنس = obj ["الجنس"]. tostring () ؛
سلسلة uniq = obj ["uniq"]. toString () ؛
سلسلة من = obj ["من"]. tostring () ؛
info = name + "@" + img + "@" + sex + "@" + uniq + "@" + from ؛
}
معلومات العودة ؛
}
// قبول الرمز لإرجاع صفحة الكود
// الواجهة تسجيل الدخول
رمز السلسلة = طلب ["رمز"] ؛
String [] arr = publiclogin.login (Code) .Split ('@') ؛
إذا (arr.length == 5)
{
سلسلة unip = arr [3] ؛
String sql = string.format ("حدد * من bs_user حيث unip = '{0}'" ، unip) ؛
if (csa.dal.dbaccess.getrs (sql) .Rows.count> 0)
{
if (csa.dal.dbaccess.getrs (sql) .rows [0] ["كلمة المرور"].
{
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 ().
إذا (curinfo.curuser! = null)
{
LevelName = curinfo.curuser.levelname ؛
name = curinfo.curuser.name ؛
الجنس = 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 (@"insert in [bs_user] ([code] ، [username] ، [LevelName] ، [RealName] ، [sex] ، [pic] ، [unip] ، [password] ، [phone] ، [fxip])
القيم ('{0}' ، '{1}' ، '{2}' ، '{3}' ، '{4}' ، '{5}' ، '{6}' ، '{7}' ، '{8}' ، '{9}') ، usercode ، arr [0]. usercode.substring (3 ، 8) ، arr [0] .trim ('' ') ، arr [2] ، arr [1] .trim (' "'') ، arr [3] ، csa.security.encrypt.getmd5 (" 123456 ") ،" fkt_ " + usercode.substring (3 ، 8)
int row = csa.dal.dbaccess.executenOnquery (inssql) ؛
إذا (الصف> 0)
{
BS_USER user = new BS_USER () ؛
user.unip = arr [3] ؛
Factory.GetUserBllinstance ().
String str = string.format ("location.href = 'myinformation.aspx؟ unip = {0}'" ، arr [3]) ؛
CSA.HC.Common.echojs (Str) ؛
}
}
}