iPhoneのネイティブアプリケーションでGoogle Readerと同期する方法

このQ&Aのポイント
  • 駆け出しプログラマーの方がiPhoneのネイティブアプリケーションでGoogleのサービスと同期する方法について質問されています。
  • 具体的には、Google Readerとの同期を実現したいとのことですが、Google ReaderのAPIではusername(Email)とpasswordをPOSTする必要があるようです。
  • 質問者はObjective-CでNSURLconnectionを使ってHTTP通信を行えることを知っていますが、より具体的なPOSTメソッドの書き方がわからないとのことです。
回答を見る
  • ベストアンサー

POSTメソッドに情報を加えたい

駆け出しプログラマーです。iPhoneのネイティブアプリケーションにGoogleのサービスと同期する機能を実装しようと考えています。具体的にはGoogle Readerとの同期を考えています。まずログインしたいのですが、Google ReaderのAPIによると、username(Email)とpasswordをPOSTする必要があるとのことです。 HTTP通信を行う際、Objective-CではNSURLconnectionを使うことは分かりました。しかしPOSTメソッドに関しては理解していません。サンプルコードを挙げて下さっているサイト様はいくつもあるのですが、POSTメソッドの部分の書き方を詳しく解説してくれてはいません。例えば以下のコードをベースにして、そこに私のEmailとパスワード情報を付加してPOSTしてみようと思うのですが、不可のやり方をご教授願えないでしょうか? //HTTP Bodyを作成 NSString *requestBody = [[NSString alloc] initWithFormat:@"Email=%@&Passwd=%@&service=readeri&accountType=HOSTED_OR_GOOGLE&source=%@", userName, password, [NSString stringWithFormat:@"%@%d", pluginVersion]]; また、私には以下の部分が解読できません initWithFormat:@"Email=%@&Passwd=%@&service=reader&accountType=HOSTED_OR_GOOGLE&source=%@",userName, password, このuserName,passwordの部分は可変個引数というやつなのでしょうか?だとするとまえもってuserName,passwordを変数として定義してそこに私のパスワード等を代入しておけば....いいのかな...そして長くなってしまいますが、最後に、@"Email=%@&Passwd=%@& このような書き方は変換指定しの一種なのでしょうか? 支離滅裂な部分があったら申し訳ありません。どうぞご回答を宜しく願いいたします。 ※参考にさせていただいたのはこのページです。 http://www.notoptimal.net/sample_code/authenticateWithGoogleClientLogin.txt http://colo-ri.jp/develop/2009/12/google-reader-apiapi.html

質問者が選んだベストアンサー

  • ベストアンサー
noname#161640
noname#161640
回答No.1

>まえもってuserName,passwordを変数として定義してそこに私のパスワード等を代入しておけば まあ、そうです。 >@"Email=%@&Passwd=%@& >このような書き方は変換指定しの一種なのでしょうか? "%@"は、フォーマット指定子です。Cでprintfするのに"%i"だの"%s"だのを指定しますが、それと同様のものです。ただし、Objective-Cでは、テキストはcharポインタなどではなくNSStringオブジェクトですから"%s"は使えません。そこで、NSObject変換用の"%@"というのを新たに用意しているわけです。これで、"%@"部分に、その後の引数にあるNSStringが嵌めこまれ、一つのテキスト(NSString)として生成されます。 POSTにしろGETにしろ、要は、URLの後にクエリー文字(a=hoge&b=hogehogeといったもの)をつけて送信することでパラメータを送るという点は同じです。この部分は、そのためのURLのテキストを生成しているわけで、下準備部分です。NSURLConnectionで指定URLに接続を行って以降が、実際にサーバーに接続しデータをやり取りする本番の処理になりますので、こっちのほうがはるかに重要です。では、がんばってください。

関連するQ&A

  • 管理者がパスワードのユーザー名で管理ページへログインできるようにしたい

    管理者がパスワードのユーザー名で管理ページへログインできるようにしたいのですが、どこの部分に ユーザーIDやパスワードを設定すれば良いのかわかりません;_;(長いので所々はしょってます) どなたか教えてください。 $username=isset($_POST['username'])?$_POST['username']:""; $password=isset($_POST['password'])?$_POST['password']:""; $database_name=isset($_POST['database_name'])?$_POST['database_name']:""; $database_host=isset($_POST['database_host'])?$_POST['database_host']:"localhost"; $database_username=isset($_POST['database_username'])?$_POST['database_username']:""; $database_password=isset($_POST['database_password'])?$_POST['database_password']:""; $product_code=isset($_POST['product_code'])?$_POST['product_code']:"";      $server_path=str_replace("\\","\\\\",$server_path); } /*else if (file_get_contents("http://www.bpowerhouse.com/bph_adminpanel/pr_validate.php?code=".$product_code)!=1) { echo "<span style='color:red;'>Your product code is wrong!</span><br/>"; }*/ else { if(is_writable("includes/")){ $f=@fopen("includes/passwd.inc.php","w+"); $database_inf='<?php $DbHost = "'.$database_host.'"; // The host where the MySQL server resides $DbDatabase = "'.$database_name.'"; // The database you are going to use $DbUser = "'.$database_username.'"; // Username $DbPassword = "'.$database_password.'"; // Password $server_path= "'.$server_path.'"; ?>'; i

    • ベストアンサー
    • PHP
  • Google Apps for Your Domain で

    Google Apps for Your Domain で POP 受信している方はいらっしゃいますか? Web を検索すると、Gmailと同じだから出来ると、 さらりと書いてあったりする。 しかし、出来ない。 Gmailのアカウントは、6コあって受信しているから、 やり方は、間違いないと思うのですが。 Helpの通りだ・・・と書いてあるが、 // Account Name: your Gmail username (including '@gmail.com') // Email Address: your full Gmail email address (username@gmail.com) // Password: your Gmail password ・・・の部分は、 自分のアカウントの訳だし。 ちなみに、 Opera Mailを使っています。

  • postの文字化け防止について

    POSTメソッドについて質問させていただきます。 WEBページはPHPで記述しています。 よろしくお願いします。 $name='田中一郎'; $req->addPostData("username", $name); 上記のようにPOSTでデータを送信すると 受け取った側のページで文字化けしてしまいます。 $nameの内容をEUC-JPで送信したいのですが、 個別に文字コードを指定することは可能でしょうか。 環境は、PHP 5.2.17です。 確認に使用しているブラウザはGoogle Chromeがメインでサブはfirefoxです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • エラー表示について

    Windows7を使用しておりますが、最近エラー表示が出て困っています。 エラー表示は 「Username and password do not match. You provided [私のemail address]. Please enter your full email address (including@domain.com).」 です。関係あるかどうか分かりませんが、outlookのカレンダーからgoogleのカレンダーへの同期ができなくなっています。 対処の仕方分かる方どうぞご教示願います。

  • pear のAUTHでsetAuthDataで登録できません 教えてください

    サンプルで ログインできたときに ポイント入れようとしてるのですが setAuthdata でできるのではと思ったのですが 1:<?php 2:require_once "Auth/Auth.php"; 3:function drawLogin($username, $status, $objAuth) { 4: if (isset($_SERVER)) { 5: $server = $_SERVER; 6: } 7: else { 8: $server = $GLOBALS['HTTP_SERVER_VARS']; 9: } 10: echo '<form method="post" action="' . $server['PHP_SELF'] . '">' . "\n"; echo '<label for="username">ユーザー名:</label>'; echo '<input type="text" name="username">' . "\n"; echo '<label for="password">パスワード:</label>'; echo '<input type="password" name="password">' . "\n"; echo '<input type="submit" value="ログイン">' . "\n"; echo '</form>' . "\n"; } $params = array( 'dsn'=>"mysql://sample:password@localhost/test", 'table'=>"pear", 'usernamecol'=>"username", 'passwordcol'=>"password", 'cryptType'=>"md5", 'db_filds'=>"*" ); $objAuth = new Auth("DB", $params,"drawLogin"); $objAuth->start(); if($objAuth->getAuth()) { echo "ようこそ!" . $objAuth->username . "さん<br>"; // メールアドレスを取得。// $objAuth->setAuthData("point",10); } ?> こんな感じでいいのかと思いつくりました データーベースに書き込みされません エラーはでないのですが 教えてください お願いします

    • ベストアンサー
    • PHP
  • POST GET HTTP 404 未検出

    POSTメソッドとGETメソッドの混在したFORMで404エラーとなります。 具体的には、次のようなFORMを考えています。 <form action="login.php?hoge=hogehoge" method="POST"> <table border="0"> <tr><td>ユーザ名</td><td><input type="text" name="name"></td></tr> <tr><td>パスワード</td><td><input type="password" name="pass"></td></tr> <tr><td colspan="2"><input type="submit" value="ログイン"></td></tr> </table> </form> Windows XPではうまく機能するのですが、 Vineではうまくいきません。「HTTP 404 未検出」となります。 どうしたらいいのかさっぱり分からない状態です。 エラーの原因を教えていただければと思います。 詳しい環境: OS:Vine PHP:5.2.8 Apache:2.0

    • 締切済み
    • PHP
  • POSTリクエストの投げ方

    ASP.NET(c sharp)、.netフレームワーク2.0環境です。 認証(ベーシック認証)付きのREST APIを使いたいのですが、 リクエストの投げ方が理解できず困っています。 URLを指定してリクエストを投げると動くものなのですが…。 使い方としては、 ・POSTリクエストを使用 ・"item"をキーにして、対象になるURLの配列を指定 とのことです。 { "item" : [ "http://www.yahoo.co.jp/test1.jpg", "http://www.google.co.jp/test2.jpg" ] } ↑サンプルとして載っていました 以下の通り作ってみましたが、うまく動きません。 URLの配列指定がうまく出来ていないのではないかと思うのですが、 方法を教えていただけないでしょうか。 宜しくお願いします。 //HttpWebRequestの作成 WebRequest webreq = WebRequest.Create("https://api.test.com"); webreq.Method = "POST"; //認証の設定 webreq.Credentials = new System.Net.NetworkCredential("test@test.com", "testpass"); //POSTするデータ string postData = "item=http://www.yahoo.co.jp/test1.jpg"; byte[] byteArray = Encoding.UTF8.GetBytes(postData); webreq.ContentType = "application/json"; webreq.ContentLength = byteArray.Length; Stream dataStream = webreq.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); WebResponse response = webreq.GetResponse(); dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); reader.Close(); dataStream.Close(); response.Close();

  • TTSSH(Tera Term)でマクロによるSSH自動ログインの仕方

    マクロによるSSH接続での自動ログインが出来なくて困っています。 googleで色々検索した結果、以下のconnect文が載っている参考サイトを見つけたのですが、ログインが出来ませんでした。 参考サイトに載っていた内容 connect 'myserver /ssh /1 /auth=password /user=username /passwd=password' ※ /auth=passwordはパスワード認証 上記を参考にマクロを組んでいるのですが、ユーザー名とパスフレーズが上手く引き渡されません。 どなたか、マクロによるSSH接続の自動ログインの仕方が分かる人がいらっしゃいましたら、教えて頂けませんか?

  • Pythonでのスクレイピング

    あるサイト(https://gemforex.com/login.php) のログイン後の情報をPythonで抜き出したいのですが 以下のソースコードだとログインができていないようです。 何が悪いのでしょうか? import requests email = "メールアドレス" password = "パスワード" session = requests.session() login_info = { "mail":email, "passwd":password, } url_login = "https://gemforex.com/login.php" res = session.post(url_login, data=login_info) print(res.text)

  • PHP-mysql フィールドの値を取得

    認証ページを作成していますが、 フィールドの値を取得できずに困っています。 $r = ?????????????????????; の部分の記述が分かりません。 ($rに、フォームで入力した$idのデータを参照して、もしあったら、その行のPasswdフィールドとフォームで入力した$passを比較したい) よろしくお願いいたします。 $id・・・formの入力内容(Emailフィールドに該当) $pass・・・formの入力内容(Passwdフィールドに該当) <? $hostname = "*"; $username = "*"; $password = "*"; $dbname = "*"; $tablename = "*"; $connect = mysql_connect($hostname, $username, $password) or die ("サーバに接続できません"); mysql_select_db($dbname) or die ("データベースに接続できません"); $sql = "SELECT Passwd FROM $tablename where Email='$id'"; $result = mysql_query($sql, $connect) or die ("クエリーを実行できません"); $num_rows = mysql_num_rows($result); $r = ?????????????????????; print "$num_rows\n"; print "$r\n"; if( $num_rows = 0 ) { print "ユーザ登録されていません。"; print '<a href="">こちらから登録してください。</a>'; session_destroy(); exit; } if( $r != $pass ) { print "パスワードが違います。"; session_destroy(); exit; } print "認証OK"; mysql_close($connect); ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう