2

OAuth を使用して iOS アプリケーションを Google App Engine と統合しようとしています。GTM には OAuth コントローラーがあることがわかりました -- http://code.google.com/p/gtm-oauth/

Google App Engine への接続に使用できますか? もしそうなら、「スコープ」パラメータとして何を入れますか

    - (id)initWithScope:(NSString *)scope
        language:(NSString *)language
  appServiceName:(NSString *)keychainAppServiceName
        delegate:(id)delegate 
finishedSelector:(SEL)finishedSelector;

App Engine アプリケーションのアドレス ( http://my-app-name.appspot.com )を使用しようとしましたが、うまくいきませんでした。

前もって感謝します!

ところで、これはiOS デバイスからの Google App Engine への認証に対するフォローアップの質問のようなものです。

4

1 に答える 1

3

私が知っている遅い答えですが、うまくいけばこれは誰かを助けるでしょう:

MYSITEは thunderofthor.com のようなものになります

ステップ1:

対象の App Engine ドメインに 2-legged OAuth を設定します。これを行うには、管理者としてhttps://www.google.com/a/MYSITEにログインします。高度なツールで、[OAuth ドメイン キーの管理] をクリックします。ここで、[このコンシューマ キーを有効にする] と [すべての API へのアクセスを許可する] をクリックして、これらのオプションを有効にします。Google 側では、MYSITEコンシューマ キーとOAUTHCONSUMERSECRETを使用するリクエストを処理できるようになりました。

ステップ2:

サーブレット コードで、MYSITE になるOAuthConsumerKeyを要求することで、クライアントが正しい資格情報を持っていることを確認できます。

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String user = null;
try {
   OAuthService oauth = OAuthServiceFactory.getOAuthService();
   user = oauth.getOAuthConsumerKey();
   LOG.info("Authenticated: " + user);
} catch (OAuthRequestException e) {
    LOG.info("Not authenticated: " + e.getMessage());
}

ステップ 3:

Google からGTMOAuthパッケージをダウンロードします。これにより、iOS がサーバーと簡単に通信できるようになります。2-legged auth にはパッケージ全体は必要ありません。実際、必要なのは GTMOAuthAuthentication ファイルだけです。コードで使用するには、次のようにします。

NSURL *url = [NSURL URLWithString:@"https://MYSITE/dosomething"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

GTMOAuthAuthentication *auth = [[GTMOAuthAuthentication alloc] initWithSignatureMethod:kGTMOAuthSignatureMethodHMAC_SHA1 consumerKey:@"MYSITE" privateKey:@"OAUTHCONSUMERSECRET"] ;
[auth setVersion:@"1.0"];

[auth addRequestTokenHeaderToRequest:request];

// Perform request and get JSON back as a NSData object
NSHTTPURLResponse *response = nil;
NSError *error = nil;

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

そこには!ユーザー名とパスワードを必要とせずに、簡単に安全に通信できます。

于 2012-02-01T01:24:53.577 に答える