iOS開發-Umeng第三方登錄-個人整理

官方網址: http://dev.umeng.com/social/ios/operation#2

一、注冊友盟賬號

登陸友盟官網,在我的產品頁面添加新應用,然后獲取到Appkey.

二、申請第三方賬號

1.新浪微博

登錄新浪微博開放平臺(點擊鏈接),填寫相關應用信息并上傳icon圖片。注意修改安全域名為sns.whalecloud.com 同時設置授權回調頁為http://sns.whalecloud.com/sina2/callback 安全域名設置在應用信息-->基本信息.

新浪申請賬號界面.jpg.png

授權回調頁、取消授權回調頁設置在應用信息-->高級信息.
新浪設置回調頁.png

  • 安全域名的修改需要二次審核通過才生效,授權回調頁修改即時生效.

2.微信

登錄微信開放平臺(點擊鏈接),填寫相關應用信息,審核通過后獲取到微信AppID及AppSecret,如果需要微信登錄功能,需要申請微信登錄權限.

3.QQ及Qzone

QQ及Qzone使用同一個AppID及Appkey,登錄騰訊開放平臺(點擊鏈接) ,選擇移動應用,填寫相關應用信息并提交審核,未審核前通過只能使用測試賬號,添加測試賬號方法如下: 選擇用戶能力-->進階社交能力-->應用調試者,添加測試賬號必須在申請者好友列表中.


添加測試賬號.png

4.人人網

登錄人人開放平臺(點擊鏈接) ,填寫相關應用信息,同時填寫應用根域名為sns.whalecloud.com 具體位置: 基本信息-->應用根域名.


人人網基本信息.png

5.豆瓣

登錄豆瓣開放平臺(點擊鏈接),創建應用并填寫相關應用信息,注意權限必須選擇廣播,同時填寫回調地址為http://sns.whalecloud.com/douban/callback.

豆瓣回調地址.png

豆瓣api.png

三、綁定第三方賬號到友盟后臺

目前需要在友盟后臺綁定的第三方賬號為:新浪微博、騰訊微博、人人網、豆瓣、Qzone,其余平臺如微信、QQ直接在代碼中設置.
綁定地址:http://umeng.com/apps
登錄友盟網站->左上角選擇你們的產品->組件->社會化組件->設置.

添加到Umeng后臺.png

1.短鏈接開關

短鏈接開關只對新浪微博、騰訊微博、人人網、豆瓣四個平臺有效,開啟短鏈接開關,分享文案中附加的鏈接會被轉碼,同時可以統計到分享回流率(點擊鏈接的次數),關閉短鏈接開關則無法統計,短鏈接開關默認為關閉狀態.

2.文字截斷開關

文字截斷開關只對新浪微博、騰訊微博、人人網、豆瓣四個平臺有效,同時只對使用自定義分享編輯頁或沒有分享編輯頁用戶有效,當分享文案超出字數限制時自動截斷,開關狀態默認關閉。

四、適配iOS9系統

在新發布的iOS9系統上圍繞用戶數據的安全性和體驗新增了一些安全特性,同時也影響了應用的實現以及集成方式,為了保證良好的穩定性和體驗,需要做如下處理:

1.HTTP傳輸安全

以iOS9 SDK編譯的工程會默認以SSL安全協議進行網絡傳輸,即HTTPS,如果依然使用HTTP協議請求網絡會報系統異常并中斷請求。目前可用如下兩種方式保持用HTTP進行網絡連接:
A、在info.plist中加入安全域名白名單(右鍵info.plist用source code打開)

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>log.umsns.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
        <key>sns.whalecloud.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>

        <!-- 集成新浪微博對應的HTTP白名單-->
        <key>sina.cn</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>weibo.cn</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>weibo.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>sinaimg.cn</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>sinajs.cn</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>sina.com.cn</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <!-- 新浪微博-->

        <!-- 集成微信、QQ、Qzone、騰訊微博授權對應的HTTP白名單-->
        <key>qq.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <!-- 騰訊授權-->

        <!-- 集成人人授權對應的HTTP白名單-->
        <key>renren.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <!-- 人人授權-->

        <!-- 集成Facebook授權對應的HTTP白名單-->
        <key>facebook.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>                
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>fbcdn.net</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>akamaihd.net</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <!-- Facebook授權-->

        <!-- 集成Twitter授權對應的HTTP白名單-->
        <key>twitter.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>                
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <!-- Twitter授權-->
    </dict>
</dict>

注:以上部分平臺官方未給出相應白名單,由技術人員測試各個平臺所收集而來,如果有所遺漏,請自行加入并向客服說明,我們會進一步補充名單.
B、在info.plist的NSAppTransportSecurity下新增NSAllowsArbitraryLoads并設置為YES,指定所有HTTP連接都可正常請求 http://dev.umeng.com/social/ios/ios9

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

2.應用跳轉(SSO等)

如果你的應用使用了如SSO授權登錄或跳轉分享功能,在iOS9下就需要增加一個可跳轉的白名單,指定對應跳轉App的URL Scheme,否則將在第三方平臺判斷是否跳轉時用到的canOpenURL時返回NO,進而只進行webview授權或授權/分享失敗.
同樣在info.plist增加:

<key>LSApplicationQueriesSchemes</key>
<array>
    <!-- 微信 URL Scheme 白名單-->
    <string>wechat</string>
    <string>weixin</string>

    <!-- 新浪微博 URL Scheme 白名單-->
    <string>sinaweibohd</string>
    <string>sinaweibo</string>
    <string>sinaweibosso</string>
    <string>weibosdk</string>
    <string>weibosdk2.5</string>

    <!-- QQ、Qzone URL Scheme 白名單-->
    <string>mqqapi</string>
    <string>mqq</string>
    <string>mqqOpensdkSSoLogin</string>
    <string>mqqconnect</string>
    <string>mqqopensdkdataline</string>
    <string>mqqopensdkgrouptribeshare</string>
    <string>mqqopensdkfriend</string>
    <string>mqqopensdkapi</string>
    <string>mqqopensdkapiV2</string>
    <string>mqqopensdkapiV3</string>
    <string>mqzoneopensdk</string>
    <string>wtloginmqq</string>
    <string>wtloginmqq2</string>
    <string>mqqwpa</string>
    <string>mqzone</string>
    <string>mqzonev2</string>
    <string>mqzoneshare</string>
    <string>wtloginqzone</string>
    <string>mqzonewx</string>
    <string>mqzoneopensdkapiV2</string>
    <string>mqzoneopensdkapi19</string>
    <string>mqzoneopensdkapi</string>
    <string>mqqbrowser</string>
    <string>mttbrowser</string>

    <!-- 人人 URL Scheme 白名單-->
    <string>renrenios</string>
    <string>renrenapi</string>
    <string>renren</string>
    <string>renreniphone</string>

    <!-- 來往 URL Scheme 白名單-->
    <string>laiwangsso</string>

    <!-- 易信 URL Scheme 白名單-->
    <string>yixin</string>
    <string>yixinopenapi</string>

    <!-- instagram URL Scheme 白名單-->
    <string>instagram</string>

    <!-- whatsapp URL Scheme 白名單-->
    <string>whatsapp</string>

    <!-- line URL Scheme 白名單-->
    <string>line</string>

    <!-- Facebook URL Scheme 白名單-->
    <string>fbapi</string>
    <string>fb-messenger-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
</array>
  • 注:以上部分平臺官方未給出相應白名單,由技術人員測試各個平臺所收集而來,如果有所遺漏,請自行加入并向客服說明,我們會進一步補充名單。

3. 應用瘦身(App Thining)

iOS9 SDK新增了對App瘦身的功能,詳情見App Thining。目前各個第三方平臺正在進行App thining的支持,所以為了正常使用第三方SDK及分享SDK,需要在Build Setting中將Enable bitcode關閉,或設置編譯標識ENABLE_BITCODE=NO。

  • 注:bitcode僅在Xcode7以上顯示并默認開啟。

五、下載并安裝SDK

1.使用cocoaPods

如需使用CocoaPods 在Podfile中增加一行,內容如下:

pod 'UMengSocial', '~> 5.0'

然后執行安裝即可

pod install

2.下載SDK

http://dev.umeng.com/social/ios/sdk-download

3.設置友盟apply

  • 獲取友盟Appkey。如果你之前已經在友盟注冊了應用,獲得了Appkey,可以繼續使用之前獲得Appkey.
  • 如果你尚未在友盟注冊賬號,需要先注冊,注冊之后登錄你的賬號,點擊添加新應用,完成新應用填寫之后,將進入應用管理頁面。在該頁面就能得到Appkey.
  • 在代碼中設置你的友盟Appkey,在 AppDelegate文件內設置你的AppKey:
#import "UMSocial.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [UMSocialData setAppKey:@"your Umeng appKey"];

// 用下面的代碼打開我們SDK在控制臺的輸出后能看到相應的錯誤碼
    [UMSocialData openLog:YES];
}

并添加下方的系統回調方法:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options{
     return  [UMSocialSnsService handleOpenURL:url];
}

六、配置URL schemes

1.為什么要配置 URL schemes

URL schemes 和跳出應用后返回應用的邏輯相關,因此如果使用了SSO授權功能或QQ、微信、webview方式的Facebook,就必須配置URL schemes,否則跳出應用后將無法返回.

2. 如何設置 URL schemes

在你的工程設置項,targets 一欄下,選中自己的 target,在 Info->URL Types 中添加 URL Schemes。如果使用的是Xcode3或更低版本,則需要在plist文件中添加。獲取各個平臺appkey或者appid的方法可以參考分享詳細文檔綁定各個平臺部分,各個平臺的url scheme格式如下表:

平臺 | url scheme設置格式 ||
------------------|----------------|
新浪微博 | “wb”+新浪appkey,例如“wb126663232” |
微信 | 微信應用appId,例如“wxd9a39c7122aa6516” |
人人網 | “rm”+你的應用bundle id,例如“rmcom.umeng.SocialSDK” |
QQ、QQ空間 | 需要添加兩個URL schemes 1. “QQ”+騰訊QQ互聯應用appId轉換成十六進制(不足8位前面補0),例如“QQ05FC5B14”。生成十六進制方法:點擊鏈接。2.“tencent“+騰訊QQ互聯應用Id,例如“tencent100424468" |
來往 | Identifier填“Laiwang”,URL Schemes填來往AppId.注意使用來往SDK后,Xcode工程other linker flags需要添加-ObjC參數? |
易信 | 易信Appkey,例如“yx35664bdff4db42c2b7be1e29390c1a06” |
Facebook | 集成最新的Facebook SDK在iOS7.0以上有效,若要使用我們提供的facebook分享需要設置“fb”+facebook AppID,例如“fb1440390216179601” |

七、第三方登錄

1.第三方登錄概述

第三方登錄主要用于簡化用戶登錄流程,通過用戶擁有的微博、QQ、微信等第三方賬號進行登錄并且構建APP自己的登錄賬號體系.
實現第三方登錄主要通過下面兩步:

  • 在第三方平臺完成授權
  • 獲取第三方平臺的accesstoken信息及用戶資料

1.1第三方登錄支持的平臺

目前友盟社會化組件支持的第三方登錄平臺為:新浪微博、微信、QQ、QQ空間、騰訊微博、人人網、豆瓣、Facebook、Twitter.

2.新浪微博登錄

在AppDelegate應用入口方法添加下面的方法:

//設置分享到QQ/Qzone的應用Id,和分享url 鏈接
    #import "UMSocialQQHandler.h"
    [UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"新浪 appkey"
                                              secret:@"新浪secret"
                                         RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];

在新浪微博登錄按鈕中實現下面的方法:

UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina];

        snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){

//          獲取微博用戶名、uid、token等

            if (response.responseCode == UMSResponseCodeSuccess) {

                UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToSina];

                NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);

            }});

刪除授權調用下面的方法:

[[UMSocialDataService defaultDataService] requestUnOauthWithType:UMShareToSina  completion:^(UMSocialResponseEntity *response){
        NSLog(@"response is %@",response);
    }];

3.QQ及Qzone登錄

QQ登錄只支持SSO登錄方式,必須具備手機QQ客戶端,Qzone默認調用SSO登錄.
添加配置文件參考文檔:添加QQ及Qzone,添加相關庫文件,配置URL schemes及添加系統回調,在AppDelegate應用入口方法添加下面的方法:

//設置分享到QQ/Qzone的應用Id,和分享url 鏈接
    #import "UMSocialQQHandler.h"
    [UMSocialQQHandler setQQWithAppId:@"qq id" appKey:@"qq apply" url:@"http://www.umeng.com/social"];

在QQ登錄按鈕中實現下面的方法:

UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToQQ];

        snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){

//          獲取微博用戶名、uid、token等

            if (response.responseCode == UMSResponseCodeSuccess) {

                UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToQQ];

                NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);

            }});

在Qzone登錄按鈕中實現下面的方法:

UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToQzone];

        snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){

//          獲取微博用戶名、uid、token等

            if (response.responseCode == UMSResponseCodeSuccess) {

                UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToQzone];

                NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);

            }});
  • 在SDK5.0及之后的版本中,用戶信息都直接在授權之后便會返回,可以在snsAccount里獲取全部的用戶信息資料.
  • Qzone將UMShareToQQ替換為UMShareToQzone即可.

4.微信登錄

添加配置文件參考文檔:添加微信及朋友圈,添加相關庫文件,配置URL schemes及添加系統回調:

  • 注意微信登錄必須先在微信開放平臺申請微信登錄權限
    在你的程序APPdelegate入口方法添加下面的代碼:
 #import "UMSocialWechatHandler.h"
    //設置微信AppId、appSecret,分享url
    [UMSocialWechatHandler setWXAppId:@"wxd930ea5d5a258f4f" appSecret:@"db426a9829e4b49a0dcac7b4162da6b6" url:@"http://www.umeng.com/social"];

在微信登錄按鈕中實現下面的方法:

  UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToWechatSession];

        snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){

            if (response.responseCode == UMSResponseCodeSuccess) {

                UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary]valueForKey:UMShareToWechatSession];

                NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);

            }
 });
  • 在SDK5.0及之后的版本中,用戶信息都直接在授權之后便會返回,可以在snsAccount里獲取全部的用戶信息資料.

八、關于提交項目進行蘋果審核

使用微信分享、登錄必須安裝微信客戶端,QQ登錄、QQ空間分享過程中必須安裝手機QQ客戶端,在未安裝客戶端的設備上測試會提示下載,這是不符合蘋果審核規則的。這是微信及騰訊QQ互聯導致的問題。 解決方案: 首先調用微信SDK或QQ互聯SDK的方法檢測是否安裝微信/QQ客戶端:

  [QQApiInterface isQQInstalled];

如果未安裝客戶端則隱藏對應登錄或分享按鈕。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,155評論 3 425
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,635評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,539評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,255評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,646評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,838評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,399評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,146評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,338評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,565評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,983評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,257評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,059評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,296評論 2 376

推薦閱讀更多精彩內容