iOS開發之第三方登錄微博-- 史上最全最新第三方登錄微博方式實現


相關資源地址:

本項目demo地址 :   https://github.com/zhonggaorong/weiboSDKDemo

最新SDK下載:  最新微博SDK

官網注冊地址:點擊打開鏈接

 

最新版本的微博登錄實現步驟實現:

1. 使用此SDK需滿足以下條件: 

  • 在新浪微博開放平台注冊並創建應用   
  • 已定義本應用的授權回調頁                   
  • 已選擇應用為iOS平台,並正確填寫Bundle id和apple id  (要與Xcode 工程中的bundle相對應)

 

注: 關於授權回調頁對移動客戶端應用來說對用戶是不可見的,所以定義為何種形式都將不影響,但是沒有定義將無法使用SDK認證登錄。建議使用默認回調頁 https://api.weibo.com/oauth2/default.html

2. 最新SDK目錄結構預覽:
    
     
 
3. 把SDK集成到工程。
    1.  通過pod 集成。
[objc]  view plain  copy
 在CODE上查看代碼片派生到我的代碼片
  1. pod "WeiboSDK"  

    2. 手動導入sdk
         1.  把上面預覽圖上面的文件,全部拖入工程中。
 2.   Other Linker Flags  增加 -all_load.  (一定要把官方說的 -Objc 換成 -all_load) 好大一個坑。
  
       3. 添加依賴庫。
        在 Target->Buid Phases->Link BinaryWith Libraries 下增加以下庫: QuartzCore.frameworkImageIO.framework SystemConfiguration.framework Security.framework CoreTelephony.frameworkCoreText.framework UIKit.framework Foundation.framework CoreGraphics.framework libz.dyliblibsqlite3.dylib
4. 編譯工程。應該編譯成功。
 
  5. 針對iOS9的相關問題。
            1. 你需要用到微博的相關功能,如登陸,分享等。並且需要實現跳轉到微博的功能,在iOS9系統中就需要在你的app的plist中添加下列鍵值對。否則在canOpenURL函數執行時,就會返回NO。了解詳情請至 https://developer.apple.com/videos/wwdc/2015/?id=703
 
[objc]  view plain  copy
 在CODE上查看代碼片派生到我的代碼片
  1. <key>LSApplicationQueriesSchemes</key>  
  2. <array>  
  3.     <string>sinaweibohd</string>  
  4.     <string>sinaweibo</string>  
  5.     <string>weibosdk</string>  
  6.     <string>weibosdk2.5</string>  
  7. </array>  
   
     2. 增加url Types。
 
 
注意:  bundle ideatefier 一定要與 微博開發者后台要一致,不然會出現調試不成功,有以下錯誤出現。
[objc]  view plain  copy
 在CODE上查看代碼片派生到我的代碼片
  1. Flag Status: -R ------- networkStatusForFlags  
  2. 2016-06-21 15:18:31.556 weiboSDKDemo[906:299845] -canOpenURL: failed for URL: "weibosdk://" - error: "(null)"  
  3. 2016-06-21 15:18:31.720 weiboSDKDemo[906:299845] Reachability Flag Status: -R ------- networkStatusForFlags  
  4. 2016-06-21 15:18:33.350 weiboSDKDemo[906:299845] -[AppDelegate application:openURL:sourceApplication:annotation:]: unrecognized selector sent to instance 0x12d615090  
  5. 2016-06-21 15:18:33.351 weiboSDKDemo[906:299845] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AppDelegate application:openURL:sourceApplication:annotation:]: unrecognized selector sent to instance 0x12d615090'  
  6. *** First throw call stack:  
  7. (0x1823fee30x181a63f80x182405ccc 0x182402aa0x182300d1c 0x100116a30x10021da7c 0x10021da3c 0x1002234e0x1823b4dd0x1823b2c40x1822dcd10x183bc4080x1875b1f70x1000d4f50x181e7a8b8)  
  8. libc++abi.dyli  


4. 正式進行相關編程了。

appDelegate.m中
    1. 向微博進行注冊微博, 通過申請的appkey。 
    2. 重寫系統方法
 
[objc]  view plain  copy
 在CODE上查看代碼片派生到我的代碼片
  1. application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{}  
具體代碼如下:
 
[objc]  view plain  copy
 在CODE上查看代碼片派生到我的代碼片
  1. //  
  2. //  AppDelegate.h  
  3. //  weiboSDKDemo  
  4. //  
  5. //  Created by 張國榮 on 16/6/21.  
  6. //  Copyright © 2016年 BateOrganization. All rights reserved.  
  7. //  
  8.   
  9. #import <UIKit/UIKit.h>  
  10. #import "WeiboSDK.h"  
  11. @protocol WeiBoDelegate <NSObject>  
  12.   
  13. //登錄的代理  
  14. -(void)weiboLoginByResponse:(WBBaseResponse *)response;  
  15. //分享的大力  
  16. -(void)weiboShareSuccessCode:(NSInteger)shareResultCode;  
  17. @end  
  18.   
  19. @interface AppDelegate : UIResponder <UIApplicationDelegate>  
  20.   
  21. @property (strong, nonatomic) UIWindow *window;  
  22. @property (weak  , nonatomic) id<WeiBoDelegate> weiboDelegate;  
  23.   
  24. @end  


[objc]  view plain  copy
 在CODE上查看代碼片派生到我的代碼片
  1. //  
  2. //  AppDelegate.m  
  3. //  weiboSDKDemo  
  4. //  
  5. //  Created by 張國榮 on 16/6/21.  
  6. //  Copyright © 2016年 BateOrganization. All rights reserved.  
  7. //  
  8.   
  9. #import "AppDelegate.h"  
  10. //申請下來的appkey  
  11. #define APP_KEY @"app key"  
  12.   
  13. @interface AppDelegate ()<WeiboSDKDelegate>  
  14.   
  15. @end  
  16.   
  17. @implementation AppDelegate  
  18.   
  19.   
  20. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
  21.     // Override point for customization after application launch.  
  22.       
  23.     [WeiboSDK registerApp:APP_KEY];  
  24.     return YES;  
  25. }  
  26.   
  27.   
  28. // 9.0 后才生效  
  29. -(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{  
  30.   
  31.     return [WeiboSDK handleOpenURL:url delegate:self];  
  32. }  
  33.   
  34.   
  35. #pragma mark 9.0之前  
  36. - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{  
  37.     return [WeiboSDK handleOpenURL:url delegate:self];  
  38. }  
  39. - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation{  
  40.     return [WeiboSDK handleOpenURL:url delegate:self];  
  41. }  
  42.   
  43.   
  44. /** 
  45.  收到一個來自微博客戶端程序的請求 
  46.   
  47.  收到微博的請求后,第三方應用應該按照請求類型進行處理,處理完后必須通過 [WeiboSDK sendResponse:] 將結果回傳給微博 
  48.  @param request 具體的請求對象 
  49.  */  
  50. - (void)didReceiveWeiboRequest:(WBBaseRequest *)request{ //向微博發送請求  
  51.       
  52.     NSLog(@" %@",request.class);  
  53. }  
  54.   
  55. /** 
  56.   
  57.  微博分享  與 微博登錄,成功與否都會走這個方法。 用戶根據自己的業務進行處理。 
  58.  收到一個來自微博客戶端程序的響應 
  59.   
  60.  收到微博的響應后,第三方應用可以通過響應類型、響應的數據和 WBBaseResponse.userInfo 中的數據完成自己的功能 
  61.  @param response 具體的響應對象 
  62.  */  
  63. - (void)didReceiveWeiboResponse:(WBBaseResponse *)response{  
  64.     if ([response isKindOfClass:WBAuthorizeResponse.class])  //用戶登錄的回調  
  65.     {  
  66.       
  67.         if ([_weiboDelegate respondsToSelector:@selector(weiboLoginByResponse:)]) {  
  68.             [_weiboDelegate weiboLoginByResponse:response];  
  69.         }  
  70.     }  
  71. }  
  72.   
  73. @end  

調用登錄的viewController.m 下面是具體的代碼:
 
[objc]  view plain  copy
 在CODE上查看代碼片派生到我的代碼片
  1. //  
  2. //  ViewController.m  
  3. //  weiboSDKDemo  
  4. //  
  5. //  Created by 張國榮 on 16/6/21.  
  6. //  Copyright © 2016年 BateOrganization. All rights reserved.  
  7. //  
  8.   
  9. #import "ViewController.h"  
  10. #import "WeiboSDK.h"  
  11. #import "AppDelegate.h"  
  12.   
  13. #define APP_REDIRECT_URL @"回調地址"  
  14. @interface ViewController ()<WeiBoDelegate>  
  15. {  
  16.     AppDelegate *delgate;  
  17. }  
  18. @end  
  19.   
  20. @implementation ViewController  
  21.   
  22. - (void)viewDidLoad {  
  23.     [super viewDidLoad];  
  24.     // Do any additional setup after loading the view, typically from a nib.  
  25. }  
  26. - (IBAction)weiboLoginAction:(id)sender {  
  27.     delgate = (AppDelegate *)[UIApplication sharedApplication].delegate;  
  28.     delgate.weiboDelegate = self;  
  29.     WBAuthorizeRequest *request = [WBAuthorizeRequest request];  
  30.       
  31.     //回調地址與 新浪微博開放平台中 我的應用  --- 應用信息 -----高級應用    -----授權設置 ---應用回調中的url保持一致就好了  
  32.     request.redirectURI = APP_REDIRECT_URL;  
  33.       
  34.     //SCOPE 授權說明參考  http://open.weibo.com/wiki/  
  35.     request.scope = @"all";  
  36.     request.userInfo = nil;  
  37.     [WeiboSDK sendRequest:request];  
  38. }  
  39.   
  40.   
  41. -(void)weiboLoginByResponse:(WBBaseResponse *)response{  
  42.     NSDictionary *dic = (NSDictionary *) response.requestUserInfo;  
  43.     NSLog(@"userinfo %@",dic);  
  44.       
  45. }  
  46.   
  47. - (IBAction)weiboShareAction:(id)sender {  
  48. }  
  49.   
  50. - (void)didReceiveMemoryWarning {  
  51.     [super didReceiveMemoryWarning];  
  52.     // Dispose of any resources that can be recreated.  
  53. }  
  54.   
  55. @end  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM