2016-07-08 8 views
4

私は、Facebookでプログラムを使って作業する方法を調査し始めています。facebook redirect_uriがiosのURLに設定されているスキーム

"myappopenup://"を使用してブラウザから開くことができるように、私のアプリでURLスキームを設定しました。

私はFacebookでアプリを作成しました。 APPIDをコピーして、次のように作ってみました:

let url = NSURL(string: "https://www.facebook.com/dialog/oauth?client_id={MY_APP_ID_WAS_HERE}&redirect_uri=myappopenup://fbcallback") 
UIApplication.sharedApplication().openURL(url!) 

このコードを実行した後、シミュレータは(私が最初SFSafariViewControllerで試してみた)サファリをオープンしました。しかし、私が見たすべてをした

enter image description here

だから、私が知りたいのです:それは私のアプリにFacebookのOAuthのからリダイレクトすることは可能ですか?

+0

いいえ、そうではありません。ネイティブモバイルアプリの場合は、Facebookが提供するSDKを使用してログインを処理する必要があります。 – CBroe

答えて

7

はい、可能です。

https://graph.facebook.com/oauth/authorize 
    ?response_type=token 
    &client_id='+'1247676148624015 
    &redirect_uri=fb1247676148624015://authorize 

は、あなたのFacebookアプリが設定されていることを確認します:

Facebook App Setup

そして、あなたのカスタムURLスキームが設定されていることを確認します

enter image description here

ここで必要な REDIRECT_URIです

上記のご迷惑をおかけするコメント - e。しかし、このことはまったく文書化されていません。

+1

ちょうど1つの問題:developers.facebook.comのFacebookログインセクションでValid OAuthリダイレクトURIとして提供された場合、このような値は無効とみなされます。私は 'fb :// authorize'を試しました。エラーメッセージは「何かが間違っています。できるだけ早く修正しています。」 HTTPトラフィックからのエラーコードは '1357010'ですが、そのコードはオンラインでは文書化されていません。 – Tom

+0

この解決法はもう機能していないようです。どんな洞察力、アレックス? – Tom

+2

ところで、 'authorize'パスを使用する必要があります。*別のカスタムパスを使用することはできません。その詳細を数時間無駄にした。 – Jason

1

私はAlex Paterson解決策をここで行うことができました。 Facebookのログイン設定にもredirect_uri URLを追加する必要がありました。セクション上で有効なOAuthのは、私は、このようなコールバックURLを追加しましたURIをリダイレクト:&コメントが示す他の答えの一部として

https://graph.facebook.com/oauth/authorize? 
response_type=token& 
client_id=12345678910& 
redirect_uri=fb12345678910://authorize 
+0

"https://graph.facebook ..."というURL全体か、redirect_uri(fb ...)という意味ですか? – Toshkuuu

+0

@Toshkuuu Facebookのデベロッパー設定の全URL –

0

を、私はあなたが何をしようとしているがサポートされていることはないと思いますFacebookの - 私の印象は、FBSDKを使ってfacebookからのトークンを認証して受け取ることを本当に望んでいるということです。

私はsomeapp://authorize戦略で太陽の下で考えられるすべての設定を試したように感じていますが、実際にはウェブアプリケーションでこれを行うだけでいいと思うようです。私は建物だ

は、ネイティブの反応(これは直接適用されない場合があります。私がobj-Cは、実際には多少似ていると確信している)ので、私はLoginButtonAccessTokenコンポーネントを公開react-native-fbsdkライブラリを使用していて、次のように使用できます。

  <LoginButton 
      readPermissions={["email", "public_profile"]} 
      onLoginFinished={ 
      (error, result) => { 
      if (error) { 
       alert("Login failed with error: " + result.error); 
      } else if (result.isCancelled) { 
       alert("Login was cancelled"); 
      } else { 
       AccessToken.getCurrentAccessToken().then((data) => { 
        const token = data.accessToken; 
        // send the token to your backend 
       } 
      ) 
       alert("Login was successful with permissions: " + result.grantedPermissions) 
      } 
      } 
     } 
     onLogoutFinished={() => alert("User logged out")} 
     /> 
関連する問題