2013-01-10 57 views
0

iOS的新手...我有一個使用token_authenticatable設置的Rails/Devise應用程序。我有一個令牌控制器時,一個有效的電子郵件地址和密碼張貼返回令牌:使用RESTKit和設計令牌的授權

URL: http://localhost:3000/tokens.json 

Body: [email protected]&password=foobar 

Response: 
{ 
    "token": "xyzxyztoken" 
} 

一旦創建此令牌允許訪問該網站的其他部分,這工作在測試客戶端(RESTClient實現)。我一直在iOS中使用RESTKit連接到它。

我AppDelegate.m創建我RKObjectManager:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    RKURL *baseURL = [RKURL URLWithBaseURLString:@"http://localhost:3000"]; 
    self.objectManager = [RKObjectManager objectManagerWithBaseURL:baseURL]; 
    self.objectManager.client.baseURL = baseURL; 

    return YES; 
} 

我有一個視圖控制器,當你點擊一個按鈕,它調用此:

-(IBAction)btnLoginRegisterTapped:(UIButton*)sender 
{ 
    // get the object manager 
    RKObjectManager *objectManager = [RKObjectManager sharedManager]; 
    objectManager.serializationMIMEType = RKMIMETypeJSON; 

    // set mapping 
    RKObjectMapping *nameMapping = [RKObjectMapping mappingForClass:[Token class]]; 
    [nameMapping mapKeyPathsToAttributes:@"token", @"token", nil]; 
    [objectManager.mappingProvider setMapping:nameMapping forKeyPath:@""]; 

    // create url 
    NSDictionary *queryParams; 
    queryParams = [NSDictionary dictionaryWithObjectsAndKeys:@"[email protected]", @"email", @"foobar", @"password", nil]; 
    RKURL *URL = [RKURL URLWithBaseURL:[objectManager baseURL] resourcePath:@"/tokens.json" queryParameters:queryParams]; 

    [objectManager loadObjectsAtResourcePath:[NSString stringWithFormat:@"%@?%@", [URL resourcePath], [URL query]] delegate:self]; 
} 

這是我的錯誤:

2013-01-10 16:32:55.554 MyApp[69314:14003] response code: 404 
2013-01-10 16:32:55.555 MyApp[69314:14003] W restkit.network:RKObjectLoader.m:300 Unable to find parser for MIME Type 'text/html' 
2013-01-10 16:32:55.555 MyApp[69314:14003] W restkit.network:RKObjectLoader.m:329 Encountered unexpected response with status code: 404 (MIME Type: text/html -> URL: http://localhost:3000/tokens.json?password=foobar&email=example%40example.com -- http://localhost:3000 -- http://localhost:3000) 
2013-01-10 16:32:55.556 MyApp[69314:14003] Error: The operation couldn’t be completed. (org.restkit.RestKit.ErrorDomain error 4.) 

這可能是一個簡單的問題,但我迷路了。我想我只是不瞭解從iOS發佈的一般信息。有一點要注意的可能是,在瀏覽器中查看/tokens.json返回路由錯誤,因爲我實際上並不有專門的觀點:

No route matches [GET] "/tokens.json" 

反正這一切的一點是爲登錄用戶並獲取存儲的令牌,然後使用它來訪問來自Rails應用程序的其他數據。

如果需要更多說明,請讓我知道。

+0

不認爲這是一個觀點的問題,看起來像一個路由問題。你能添加你的路線嗎? – BenB

回答

0

在你的Rails應用程序,打開配置/ routes.rb中

添加

resources :tokens