0

dribbble クライアントで作業していますが、AFOAuth2Manager を使用して認証を取得するのに問題があります。私は現在NXOAuth2Clientを使用していますが、AFOAuth2Managerに出くわしたばかりなので、試してみたいと思います。

NXOAuthClient を使用すると、サーバーからトークンを問題なく取得できます。ただし、AFOAuth2Manager に関しては、常にエラーが返されます。

これは、NXOAuth2Client で初期化するために使用したものです。

    [[NXOAuth2AccountStore sharedStore] setClientID:kDRBClientID
                                             secret:kDRBClientSecret
                                              scope:[NSSet setWithObjects:@"public", @"write", @"comment", @"upload", nil]
                                   authorizationURL:[NSURL URLWithString:kDRBAuthorizationURL]
                                           tokenURL:[NSURL URLWithString:kDRBTokenURL]
                                        redirectURL:[NSURL URLWithString:kDRBRedirectURL]
                                      keyChainGroup:kDRBAccountType
                                     forAccountType:kDRBAccountType];

同じ定数を使用して、次のように AFOAuth2Manager で初期化しようとしています:

    NSURL *baseURL = [NSURL URLWithString:kDRBBaseUrl];
    AFOAuth2Manager *OAuth2Manager =
    [[AFOAuth2Manager alloc] initWithBaseURL:baseURL
                                    clientID:kDRBClientID
                                      secret:kDRBClientSecret];
    OAuth2Manager.useHTTPBasicAuthentication = NO;

    NSDictionary *dictionary = @{@"scope" : @"public write",
                                 @"redirect_uri" : kDRBRedirectURL};
     [OAuth2Manager authenticateUsingOAuthWithURLString:@"/oauth/authorize"
                                            parameters:dictionary
                                               success:^(AFOAuthCredential *credential) {
                                                   NSLog(@"Token: %@", credential.accessToken);
                                               }
                                               failure:^(NSError *error) {
                                                   NSLog(@"Error: %@", error);
                                               }];

dribbble のサインイン フローでは、最初にユーザーをサインイン ページ (/oauth/authorize ページ) に誘導します。ユーザーがユーザー名とパスワードを入力すると、指定された redirectURL にユーザーがリダイレクトされます。

今の私の問題は、サインイン ページにさえアクセスできなかったことです。誰かが私が間違っていることに光を当てることができますか? (AFOAuth2Manager のさまざまな認証方法も試しましたが、どれも機能しません)。

私は OAuth2 に非常に慣れていないので、ご容赦ください。

アップデート

エラーログは次のとおりです。

Error: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: client error (422)" UserInfo=0x7fb02ad2de00 {com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x7fb02ad6e200> { URL: https://dribbble.com/oauth/authorize } { status code: 422, headers {
    Connection = close;
    "Content-Length" = 47;
    "Content-Type" = "application/json; charset=utf-8";
    Date = "Sat, 08 Aug 2015 23:52:20 GMT";
    Server = "nginx/1.4.6 (Ubuntu)";
    Status = "422 Unprocessable Entity";
    "X-Request-Id" = "8489a5f0-206a-48ff-b6e7-81664fc6b6f5";
    "X-Runtime" = "0.006667";
} }

NXOAuth2Client を使用すると、次のようなパラメーターを使用してサインイン ページの URL が準備されます。

https: //dribbble.com/oauth/authorize?client_id=my_client_id&scope=write%20comment%20upload%20public&redirect_uri=my_redirect_uri&response_type=code

しかし、AFOAuth2 ではhttps://dribbble.com/oauth/authorizeでエラーがスローされることに気付きました。私のパラメータをリクエストURLに追加しませんか?

4

1 に答える 1

1

リクエストを行う前に次の行を追加してください

OAuth2Manager.responseSerializer = [AFJSONResponseSerializer serializer];

また、422 Unprocessable Entity - サーバーは含まれている命令を処理できませんでした。要求は適切な形式でしたが、セマンティック エラーのため従うことができませんでした。

たとえば、このエラー状態は、XML 要求本文に整形式 (つまり、構文的に正しい) が含まれているが、意味的に誤った XML 命令が含まれている場合に発生する可能性があります。

于 2015-08-09T04:49:56.827 に答える