2015-12-25 39 views
1

環顧四周,特別是關注Pinterest API文檔,我認爲我已經正確設置了所有內容,但在嘗試登錄時仍然得到error NSError: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: unauthorized (401)"。授予SDK文檔在Objective-C中,但我認爲我的Swift轉換看起來像好?我能想到的唯一事情就是他們必須在他們的最後批准APP ID?Pinterest需要在OAuth工作之前授權App ID嗎?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
     // Override point for customization after application launch. 


     PDKClient.configureSharedInstanceWithAppId("XXX") 


     return true 
    } 


    func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool { 
     let pdkClient: PDKClient = PDKClient.sharedInstance() 
     return pdkClient.handleCallbackURL(url) 
    } 



PDKClient.sharedInstance().getAuthenticatedUserPinsWithFields(Set(["id", "image", "note"]), success: 
      { (pdk :PDKResponseObject!) -> Void in 
      print("success /(pdk)") 
      }) { (err :NSError!) -> Void in 
       print("error NSError: \(err)") 
     } 

<key>LSApplicationQueriesSchemes</key> 
    <array> 
     <string>pinterestsdk.v1</string> 
    </array> 
    <key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSExceptionDomains</key> 
     <dict> 
      <key>pinit</key> 
      <dict> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
       <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> 
       <false/> 
      </dict> 
     </dict> 
    </dict> 

回答

1

我想我是缺少我info.plist中另一個關鍵,我添加了以下(即我在SDK中的示例應用程序中),我現在已經成功地驗證:

<key>CFBundleURLTypes</key> 
    <array> 
     <dict> 
      <key>CFBundleURLName</key> 
      <string></string> 
      <key>CFBundleURLSchemes</key> 
      <array> 
       <string>pdkXXX</string> 
      </array> 
     </dict> 
    </array> 
+0

您是否必須等到該應用獲得批准?我得到這個錯誤(401),但該應用程序仍在開發 – TomSawyer

+0

不,該應用程序不需要批准您的電話工作......我猜你的錯誤是(1)與應用程序傳輸安全性有關,請參閱我上面的代碼或(2)您的API調用寫入不正確。 – GarySabo

+0

我做所有它需要的東西,但仍然得到這個錯誤。 Pinterest上的應用程序在1周後仍未獲得批准,因此我取消將Pinterest按鈕插入到我的應用程序中。用戶可以使用分享表。愚蠢的pinterest – TomSawyer

-1

之前調用getAuthenticatedUserPinsWithFields方法可確保您擁有適當的權限。

if(PDKClient.sharedInstance().authorized == false) 
    { 
     PDKClient.sharedInstance().authenticateWithPermissions([PDKClientReadPrivatePermissions,PDKClientReadPublicPermissions,PDKClientReadRelationshipsPermissions,PDKClientWritePublicPermissions,PDKClientWritePrivatePermissions,PDKClientWriteRelationshipsPermissions], withSuccess: { (response : PDKResponseObject!) -> Void in 

      // call getAuthenticatedUserPinsWithFields method here 



      }, andFailure: { (error : NSError!) -> Void in 
       print(error.description) 
     }) 
    }