Android 集成微信、QQ禁灼、微博管挟、支付寶、銀聯(lián)弄捕、華為僻孝、OPPO

效果圖

WechatIMG26.png

源碼

版本

  1. 華為: 2.6.3.301
  2. QQ: 3.3.3 (6008)
  3. 微博: 4.3.9
  4. 微信: 5.4.0
  5. 銀聯(lián): 3.4.1
  6. 支付寶: 15.6.4
  7. OPPO:2.0.0

集成

  1. 添加倉庫地址

    maven { url "https://dl.bintray.com/thelasterstar/maven/" }     // 微博 aar
    maven { url 'http://developer.huawei.com/repo/' }               // 華為倉庫
    maven { url 'https://dl.bintray.com/wenjie/maven' }
    
  2. 根據(jù)要集成的第三方庫添加依賴

    api 'com.enowr.android:Auth:0.0.7'
    api 'com.enowr.android:AuthHW:0.0.7'
    api 'com.enowr.android:AuthQQ:0.0.7'
    api 'com.enowr.android:AuthWB:0.0.7'
    api 'com.enowr.android:AuthWX:0.0.7'
    api 'com.enowr.android:AuthYL:0.0.7'
    api 'com.enowr.android:AuthZFB:0.0.7'
    api 'com.enowr.android:AuthOPPO:0.0.7'
    
  3. Manifest

    <manifest>
        <!-- 華為權(quán)限 -->
        <uses-permission android:name="android.permission.INTERNET" />                                  <!--HMS-SDK引導(dǎo)升級(jí)HMS功能,訪問OTA服務(wù)器需要網(wǎng)絡(luò)權(quán)限-->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />                    <!--HMS-SDK引導(dǎo)升級(jí)HMS功能守谓,保存下載的升級(jí)包需要SD卡寫權(quán)限-->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>                       <!--檢測網(wǎng)絡(luò)狀態(tài)-->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>                          <!--檢測wifi狀態(tài)-->
        <uses-permission android:name="android.permission.READ_PHONE_STATE"/>                           <!--為了獲取用戶手機(jī)的IMEI穿铆,用來唯一的標(biāo)識(shí)用戶。-->
        <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />                  <!--如果是安卓8.0斋荞,應(yīng)用編譯配置的targetSdkVersion>=26荞雏,請(qǐng)務(wù)必添加權(quán)限 -->
    
        <!-- QQ權(quán)限 -->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <!-- SDK2.1新增獲取用戶位置信息 -->
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    
        <!-- 微博權(quán)限 -->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" /><!-- 用于調(diào)用 JNI -->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        
        <!-- 微信權(quán)限 其中網(wǎng)絡(luò)權(quán)限如果沒有使用掃碼登錄功能非必要;后三個(gè)權(quán)限,如果沒有使用mta凤优,也非必要羡疗,即使有使用mta,去掉也不影響功能 -->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
        <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        
        <!-- 銀聯(lián) -->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.NFC" />
        <uses-permission android:name="org.simalliance.openmobileapi.SMARTCARD" />
        <uses-feature android:name="android.hardware.nfc.hce" />
        
        <!-- 支付寶 -->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        
        <!-- OPPO -->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
        <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.GET_TASKS" />
        <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
        <uses-permission android:name="android.permission.GET_ACCOUNTS" />
        <uses-permission android:name="android.permission.USE_CREDENTIALS" />
        <uses-permission android:name="android.permission.SEND_SMS" />
        <uses-permission android:name="android.permission.READ_SMS" />
        <uses-permission android:name="android.permission.WRITE_SMS" />
        <uses-permission android:name="android.permission.RECEIVE_SMS" />
    
        <application>
            <!-- 華為 -->
            <!-- value的值“xxx”用實(shí)際申請(qǐng)的應(yīng)用ID替換别洪,來源于開發(fā)者聯(lián)盟網(wǎng)站應(yīng)用的服務(wù)詳情叨恨。-->
            <!-- replace 用于避免其他庫引用華為sdk時(shí)設(shè)置 appId 沖突 -->
            <meta-data
                tools:replace="android:value"
                android:name="com.huawei.hms.client.appid"
                android:value="appid=xxx">
            </meta-data>
            <!-- 在application節(jié)點(diǎn)下增加provider,UpdateProvider用于HMS-SDK引導(dǎo)升級(jí)HMS挖垛,提供給系統(tǒng)安裝器讀取升級(jí)文件痒钝。UpdateSdkFileProvider用于應(yīng)用自升級(jí)。-->
            <!--“xxx.xxx.xxx”用實(shí)際的應(yīng)用包名替換-->
            <provider
                android:name="com.huawei.hms.update.provider.UpdateProvider"
                android:authorities="xxx.xxx.xxx.hms.update.provider"
                android:exported="false"
                android:grantUriPermissions="true" >
            </provider>
            <!-- 如果應(yīng)用使用了HMSAgent.checkUpdate(Activity activity,CheckUpdateHandler callback)接口痢毒,則必須配置UpdateSdkFileProvider -->
            <!--“xxx.xxx.xxx”用實(shí)際的應(yīng)用包名替換-->
            <provider
                android:name="com.huawei.updatesdk.fileprovider.UpdateSdkFileProvider"
                android:authorities="xxx.xxx.xxx.updateSdk.fileProvider"
                android:exported="false"
                android:grantUriPermissions="true">
            </provider>
        
        
            <!-- QQ -->
            <!-- xxxxxx 用注冊(cè)的appId替換 -->
            <activity
                android:name="com.tencent.tauth.AuthActivity"
                android:launchMode="singleTask"
                android:noHistory="true">
                <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="android.intent.category.BROWSABLE" />
                    <data android:scheme="tencentxxxxxx" />
                </intent-filter>
            </activity>
        
        
            <!-- 微信 分享登錄實(shí)現(xiàn) WXEntryActivity 繼承自 AuthActivity送矩, 支付實(shí)現(xiàn) WXPayEntryActivity 繼承自 AuthActivity -->
            <activity
                android:name=".wxapi.WXEntryActivity"
                android:exported="true"
                android:label="@string/app_name"
                android:launchMode="singleTask"
                android:taskAffinity="net.sourceforge.simcpux"
                android:theme="@android:style/Theme.Translucent.NoTitleBar" />
            <activity
                android:name=".wxapi.WXPayEntryActivity"
                android:exported="true"
                android:launchMode="singleTask"
                android:theme="@android:style/Theme.Translucent.NoTitleBar" />
            
            
            <!-- 支付寶簽約 支付寶免密支付完成時(shí)走此filter,必須匹配scheme -->
            <activity
                android:name="com.enowr.auth.AliRouseActivity"
                android:allowTaskReparenting="true">
                <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="android.intent.category.BROWSABLE" />
                    <data android:scheme="xxx" />
                </intent-filter>
            </activity>
            
            <!-- OPPO -->
            <meta-data
                android:name="debug_mode"
                android:value="false" />                        <!-- 日志開關(guān)哪替,發(fā)布時(shí)候設(shè)置為false -->
            <meta-data
                android:name="app_key"
                android:value="c5217trjnrmU6gO5jG8VvUFU0" />    <!-- appKey -->
            </application>
    </manifest>
    
  4. 混淆

    # Auth
    -keep class com.enowr.** {*;}
    
    
    # 華為
    -ignorewarning
    -keepattributes *Annotation*
    -keepattributes Exceptions
    -keepattributes InnerClasses
    -keepattributes Signature
    -keepattributes SourceFile,LineNumberTable
    -keep class com.hianalytics.android.**{*;}
    -keep class com.huawei.updatesdk.**{*;}
    -keep class com.huawei.hms.**{*;}        
    -keep class com.huawei.android.hms.agent.**{*;}
    
    
    # QQ
    -keep class com.tencent.open.TDialog$*
    -keep class com.tencent.open.TDialog$* {*;}
    -keep class com.tencent.open.PKDialog
    -keep class com.tencent.open.PKDialog {*;}
    -keep class com.tencent.open.PKDialog$*
    -keep class com.tencent.open.PKDialog$* {*;}
    
    
    # 微博
    -keep class com.sina.weibo.sdk.** {*;}
    
    
    # 微信
    -keep class com.tencent.mm.opensdk.** {*;}
    -keep class com.tencent.wxop.** {*;}
    -keep class com.tencent.mm.sdk.** {*;}
    
    
    # 銀聯(lián)
    -keep  public class com.unionpay.uppay.net.HttpConnection {public <methods>;}
    -keep  public class com.unionpay.uppay.net.HttpParameters {public <methods>;}
    -keep  public class com.unionpay.uppay.model.BankCardInfo {public <methods>;}
    -keep  public class com.unionpay.uppay.model.PAAInfo {public <methods>;}
    -keep  public class com.unionpay.uppay.model.ResponseInfo {public <methods>;}
    -keep  public class com.unionpay.uppay.model.PurchaseInfo {public <methods>;}
    -keep  public class com.unionpay.uppay.util.DeviceInfo {public <methods>;}
    -keep  public class com.unionpay.uppay.util.PayEngine {
        public <methods>;
        native <methods>;
    }
    -keep  public class com.unionpay.utils.UPUtils {native <methods>;}
    
    
    # 支付寶
    -keep class com.alipay.android.app.IAlixPay{*;}
    -keep class com.alipay.android.app.IAlixPay$Stub{*;}
    -keep class com.alipay.android.app.IRemoteServiceCallback{*;}
    -keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
    -keep class com.alipay.sdk.app.PayTask{ public *;}
    -keep class com.alipay.sdk.app.AuthTask{ public *;}
    -keep class com.alipay.sdk.app.H5PayCallback {
        <fields>;
        <methods>;
    }
    -keep class com.alipay.android.phone.mrpc.core.** { *; }
    -keep class com.alipay.apmobilesecuritysdk.** { *; }
    -keep class com.alipay.mobile.framework.service.annotation.** { *; }
    -keep class com.alipay.mobilesecuritysdk.face.** { *; }
    -keep class com.alipay.tscenter.biz.rpc.** { *; }
    -keep class org.json.alipay.** { *; }
    -keep class com.alipay.tscenter.** { *; }
    -keep class com.ta.utdid2.** { *;}
    -keep class com.ut.device.** { *;}
    # SDK 包可能不包含 utdid
    -dontwarn com.ta.utdid2.**
    -dontwarn com.ut.device.**
    # SDK 包可能不包含 securitysdk
    -dontwarn com.alipay.mobilesecuritysdk.**
    
    # OPPO
    -keep class com.nearme.** {*;}
    
  5. 初始化

     Auth.init()
            .setHWAppID("")
            .setHWKey("")
            .setHWMerchantID("")
            .setQQAppID("")
            .setWXAppID("")
            .setWXSecret("")
            .setWBAppKey("")
            .setWBRedirectUrl("")
            .setWBScope("")
            .setOPPOAppSecret("secret")
            .build();
    
    // 如果使用華為支付功能, 還需要在 MainActivity 里初始化華為
    Auth.withHW(context).initHW(activity);
    
    // OPPO 要求使用OPPO 自帶的退出功能
    Auth.withOPPO(context).exit(activity);
    
    // 使用微信相關(guān)功能
    // 包名相應(yīng)目錄下新建一個(gè)wxapi目錄栋荸,并在該wxapi目錄下新增兩個(gè)WXPayEntryActivity、WXEntryActivity類凭舶,繼承自AuthActivity
    

使用

    public void hwLogin() {
        Auth.withHW(this)
                .loginForceLogin(false)  // 當(dāng)force為false時(shí)晌块,錯(cuò)誤碼為2001、2002時(shí)帅霜,會(huì)再次以參數(shù)為ture嘗試調(diào)用一次
                .login(mCallback);
    }

    public void hwPay() {
        Auth.withHW(this)
                .payAmount("")
                .payApplicationId("")
                .payChannel(1)
                .payCountry("")
                .payCurrency("")
                .payExtReserved("")
                .payMerchantId("")
                .payMerchantName("")
                .payProductDesc("")
                .payProductName("")
                .payPublicKey("")
                .payRequestId("")
                .payServiceCatalog("")
                .paySign("")
                .payUrl("")
                .payVersion("")
                .pay(mCallback);
    }

    public void hwRouse() {
        Auth.withHW(this)
                .rouseAmount("")
                .rouseApplicationId("")
                .rouseChannel(1)
                .rouseCountry("")
                .rouseCurrency("")
                .rouseExtReserved("")
                .rouseMerchantId("")
                .rouseMerchantName("")
                .rouseProductDesc("")
                .rouseProductName("")
                .rousePublicKey("")
                .rouseRequestId("")
                .rouseServiceCatalog("")
                .rouseSign("")
                .rouseUrl("")
                .rouseVersion("")
                .rouseTradeType("")
                .rouse(mCallback);
    }
    
    public void oppoPay() {
        Auth.withOPPO(this)
                .payAmount(1)
                .payAttach("attach")
                .payOrderId(String.valueOf(System.currentTimeMillis()))
                .payProductName("test")
                .payProductDesc("test")
                .payCallbackUrl("")
                .payUseCachedChannel(false)
                .pay(mCallback);
    }

    public void qqLogin() {
        Auth.withQQ(this)
                .loginQrcode(true)
                .login(mCallback);
    }

    public void qqShareText() {
        Auth.withQQ(this)
                .shareTextArk("")
                .shareTextImage("")
                .shareTextName("")
                .shareTextQzoneHide(true)
                .shareTextSummary("")
                .shareTextTargetUrl("")
                .shareTextTitle("")
                .shareText(mCallback);
    }

    public void qqShareImage() {
        Auth.withQQ(this)
                .shareImageArk("")
                .shareImagePath("")
                .shareImageName("")
                .shareImageQzoneHide(true)
                .shareImage(mCallback);
    }

    public void qqShareMusic() {
        Auth.withQQ(this)
                .shareMusicImageUrl("")
                .shareMusicSummary("")
                .shareMusicArk("")
                .shareMusicName("")
                .shareMusicQzoneHide(true)
                .shareMusicTargetUrl("")
                .shareMusicTitle("")
                .shareMusicUrl("")
                .shareMusic(mCallback);
    }

    public void qqShareVideo() {
        Auth.withQQ(this)
                .shareVideoPath("")
                .shareVideoBack("")
                .shareVideoImageList(null)
                .shareVideoScene("")
                .shareVideoSummary("")
                .shareVideo(mCallback);
    }

    public void qqShareApp() {
        Auth.withQQ(this)
                .shareAppName("")
                .shareAppImageUrl("")
                .shareAppSummary("")
                .shareAppTitle("")
                .shareAppArk("")
                .shareAppQzoneHide(true)
                .shareApp(mCallback);
    }

    public void qqShareQzone() {
        Auth.withQQ(this)
                .shareToQzoneImageList(null)
                .shareToQzoneSummary("")
                .shareToQzoneTargetUrl("")
                .shareToQzoneTitle("")
                .shareToQzone(mCallback);
    }

    public void qqShareMood() {
        Auth.withQQ(this)
                .shareToMoodBack("")
                .shareToMoodImageList(null)
                .shareToMoodScene("")
                .shareToMoodSummary("")
                .shareToMoodVideoPath("")
                .shareToMood(mCallback);
    }

    public void wbLogin() {
        Auth.withWB(this)
                .login(mCallback);
    }

    public void wbShareText() {
        Auth.withWB(this)
                .shareTextContent("")
                .shareTextSummary("")
                .shareTextTitle("")
                .shareTextUrl("")
                .shareText(mCallback);
    }

    public void wbShareImage() {
        Auth.withWB(this)
                .shareImageBitmap(null)
                .shareImageContent("")
                .shareImage(mCallback);
    }

    public void wbShareMultiImage() {
        Auth.withWB(this)
                .shareMultiImageContent("")
                .shareMultiImageUriList(null)
                .shareMultiImage(mCallback);
    }

    public void wbShareLink() {
        Auth.withWB(this)
                .shareLinkContent("")
                .shareLinkSummary("")
                .shareLinkThumbImage(null)
                .shareLinkTitle("")
                .shareLinkUrl("")
                .shareLink(mCallback);
    }

    public void wbShareVideo() {
        Auth.withWB(this)
                .shareVideoPath("")
                .shareVideoContent("")
                .shareVideoSummary("")
                .shareVideoTitle("")
                .shareVideo(mCallback);
    }

    public void wbShareToStory() {
        Auth.withWB(this)
                .shareToStoryImagePath("")
                .shareToStoryVideoPath("")
                .shareToStory(mCallback);
    }

    public void wxLogin() {
        Auth.withWX(this)
                .login(mCallback);
    }

    public void wxPay() {
        Auth.withWX(this)
                .payNonceStr("")
                .payPackageValue("")
                .payPartnerId("")
                .payPrepayId("")
                .paySign("")
                .payTimestamp("")
                .pay(mCallback);
    }

    public void wxRouse() {
        Auth.withWX(this)
                .rouseUrl("")
                .rouse(mCallback);
    }

    public void wxShareText() {
        Auth.withWX(this)
                .shareTextSummary("")
                .shareTextContent("")
                .shareTextThumbData(null)
                .shareTextTitle("")
                .shareText(mCallback);
    }

    public void wxShareImage() {
        Auth.withWX(this)
                .shareImageBitmap(null)
                .shareImageSummary("")
                .shareImageThumbData(null)
                .shareImageTitle("")
                .shareImage(mCallback);
    }

    public void wxShareLink() {
        Auth.withWX(this)
                .shareLinkThumbData(null)
                .shareLinkSummary("")
                .shareLinkTitle("")
                .shareLinkUrl("")
                .shareLink(mCallback);
    }

    public void wxShareVideo() {
        Auth.withWX(this)
                .shareVideoThumbData(null)
                .shareVideoSummary("")
                .shareVideoLowBandUrl("")
                .shareVideoTitle("")
                .shareVideoUrl("")
                .shareVideo(mCallback);
    }

    public void wxShareMusic() {
        Auth.withWX(this)
                .shareMusicThumbData(null)
                .shareMusicSummary("")
                .shareMusicDataUrl("")
                .shareMusicLowBandDataUrl("")
                .shareMusicLowBandUrl("")
                .shareMusicTitle("")
                .shareMusicUrl("")
                .shareMusic(mCallback);
    }

    public void wxShareApp() {
        Auth.withWX(this)
                .shareAppId("")
                .shareAppPath("")
                .shareAppSummary("")
                .shareAppThumbData(null)
                .shareAppTitle("")
                .shareAppType(1)
                .shareAppUrl("")
                .shareAppWithShareTicket(true)
                .shareApp(mCallback);
    }

    public void ylPay() {
        Auth.withYL(this)
                .payOrderInfo("")
                .payIsTest(true)
                .pay(mCallback);
    }

    public void zfbPay() {
        Auth.withZFB(this)
                .payOrderInfo("")
                .payIsShowLoading(true)
                .pay(mCallback);
    }


    public void zfbRouse() {
        Auth.withZFB(this)
                .rouseUrl("")
                .rouse(mCallback);
    }

返回碼

  1. 華為

  2. QQ

    110201:未登陸
    110405:登錄請(qǐng)求被限制
    110404:請(qǐng)求參數(shù)缺少appid
    110401:請(qǐng)求的應(yīng)用不存在
    110407:應(yīng)用已經(jīng)下架
    110406:應(yīng)用沒有通過審核
    100044:錯(cuò)誤的sign
    110500:獲取用戶授權(quán)信息失敗
    110501:獲取應(yīng)用的授權(quán)信息失敗
    110502:設(shè)置用戶授權(quán)失敗
    110503:獲取token失敗
    110504:系統(tǒng)內(nèi)部錯(cuò)誤
    
  3. 微博

    C8998: 簽名不一致
    8000: 沒有安裝客戶端
    8001: 非官方客戶端
    
  4. 微信

  5. 支付寶

  6. OPPO 為離線文檔

說明

  1. 華為:Mac 下集成Agent執(zhí)行腳本文件沒反應(yīng)匆背。

    GetHMSAgent_cn.sh 換行符的原因?qū)е略趍acos下執(zhí)行無反映,可通過下列命令替換下?lián)Q行符:
    cat GetHMSAgent_cn.sh | tr "^M" "\n" > GetHMSAgent_cn_new.sh

  2. 華為:同時(shí)引入其他第三方華為支持時(shí)(如極光的華為推送插件)

    禁用華為依賴傳遞身冀,由于極光插件全量引入了華為SDK钝尸,所以全部禁用所有依賴
    implementation ('com.enowr.android:AuthHW:0.0.3'){transitive false}
    引入極光的華為插件,配置相關(guān)配置即可
    implementation 'cn.jiguang.sdk.plugin:huawei:3.3.2'

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末搂根,一起剝皮案震驚了整個(gè)濱河市珍促,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剩愧,老刑警劉巖猪叙,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異隙咸,居然都是意外死亡沐悦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門五督,熙熙樓的掌柜王于貴愁眉苦臉地迎上來藏否,“玉大人,你說我怎么就攤上這事充包「鼻” “怎么了遥椿?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長淆储。 經(jīng)常有香客問我冠场,道長,這世上最難降的妖魔是什么本砰? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任碴裙,我火速辦了婚禮,結(jié)果婚禮上点额,老公的妹妹穿的比我還像新娘舔株。我一直安慰自己,他們只是感情好还棱,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布载慈。 她就那樣靜靜地躺著,像睡著了一般珍手。 火紅的嫁衣襯著肌膚如雪办铡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天琳要,我揣著相機(jī)與錄音寡具,去河邊找鬼。 笑死焙蹭,一個(gè)胖子當(dāng)著我的面吹牛晒杈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播孔厉,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼帖努!你這毒婦竟也來了撰豺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤拼余,失蹤者是張志新(化名)和其女友劉穎污桦,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匙监,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凡橱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亭姥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稼钩。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖达罗,靈堂內(nèi)的尸體忽然破棺而出坝撑,到底是詐尸還是另有隱情静秆,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布巡李,位于F島的核電站抚笔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏侨拦。R本人自食惡果不足惜殊橙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狱从。 院中可真熱鬧膨蛮,春花似錦、人聲如沸矫夯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽训貌。三九已至制肮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間递沪,已是汗流浹背豺鼻。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留款慨,地道東北人儒飒。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像檩奠,于是被迫代替她去往敵國和親桩了。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容