|
11 | 11 | },
|
12 | 12 | {
|
13 | 13 | "cell_type": "code",
|
14 |
| - "execution_count": 9, |
| 14 | + "execution_count": 3, |
15 | 15 | "id": "fb4133a5",
|
16 | 16 | "metadata": {},
|
17 | 17 | "outputs": [
|
|
21 | 21 | "True"
|
22 | 22 | ]
|
23 | 23 | },
|
24 |
| - "execution_count": 9, |
| 24 | + "execution_count": 3, |
25 | 25 | "metadata": {},
|
26 | 26 | "output_type": "execute_result"
|
27 | 27 | }
|
28 | 28 | ],
|
29 | 29 | "source": [
|
30 |
| - "import facebook\n", |
| 30 | + "import facebook # unclear if this library still works...\n", |
| 31 | + "\n", |
31 | 32 | "import os\n",
|
32 | 33 | "import sys\n",
|
33 | 34 | "import json\n",
|
|
44 | 45 | },
|
45 | 46 | {
|
46 | 47 | "cell_type": "code",
|
47 |
| - "execution_count": 21, |
| 48 | + "execution_count": 25, |
| 49 | + "id": "3526b051", |
| 50 | + "metadata": {}, |
| 51 | + "outputs": [ |
| 52 | + { |
| 53 | + "name": "stdout", |
| 54 | + "output_type": "stream", |
| 55 | + "text": [ |
| 56 | + "\n", |
| 57 | + "failure\n" |
| 58 | + ] |
| 59 | + } |
| 60 | + ], |
| 61 | + "source": [ |
| 62 | + "def test_func(**kwargs):\n", |
| 63 | + " print(kwargs.get(\"first_name\", \"\"))\n", |
| 64 | + " print(kwargs.get(\"first_name\", \"failure\"))\n", |
| 65 | + "\n", |
| 66 | + "\n", |
| 67 | + "# test_str = kwargs.get('first_name','') + kwargs.get('first_nam','') + kwargs.get('last_name','')\n", |
| 68 | + "# print(test_str)\n", |
| 69 | + "# if kwargs:\n", |
| 70 | + "# print('yes')\n", |
| 71 | + "# else:\n", |
| 72 | + "# print('no')\n", |
| 73 | + "test_func()" |
| 74 | + ] |
| 75 | + }, |
| 76 | + { |
| 77 | + "cell_type": "code", |
| 78 | + "execution_count": 38, |
48 | 79 | "id": "34d6a9fa",
|
49 | 80 | "metadata": {},
|
50 | 81 | "outputs": [],
|
51 | 82 | "source": [
|
52 | 83 | "class facebookHelper:\n",
|
53 | 84 | " def __init__(self):\n",
|
| 85 | + " # music_mapping credentials\n", |
54 | 86 | " self.appID = os.environ.get(\"facebookAppID\")\n",
|
55 | 87 | " self.access_token = os.environ.get(\"facebookAppAcessToken\")\n",
|
56 | 88 | " self.user_token = os.environ.get(\"facebookUserAccessToken\")\n",
|
| 89 | + " # yoU credentials\n", |
| 90 | + " self.old_token = os.environ.get(\"oldFbID\")\n", |
| 91 | + " self.old_secret = os.environ.get(\"oldSecret\")\n", |
| 92 | + " # default fields\n", |
| 93 | + " self.base_url = \"https://graph.facebook.com/v\"\n", |
57 | 94 | " self.data_path = \"/Users/dayoorigunwa/code_base/music_mapping/data/\"\n",
|
58 |
| - " #self.sp = self.getClient()\n", |
59 |
| - " \n", |
| 95 | + " # self.sp = self.getClient()\n", |
| 96 | + "\n", |
60 | 97 | " def __str__(self):\n",
|
61 | 98 | " return \"Facebook API Helper\"\n",
|
62 |
| - " \n", |
63 |
| - " def get_graph(self):\n", |
64 |
| - " return facebook.GraphAPI(access_token=self.user_token, version='3.1')" |
| 99 | + "\n", |
| 100 | + " def _request_args(self):\n", |
| 101 | + " args = {\n", |
| 102 | + " \"version\": \"12.0\",\n", |
| 103 | + " \"node\": \"me\",\n", |
| 104 | + " \"field_sep\": \"%2C\",\n", |
| 105 | + " \"creds_sep\": \"&\",\n", |
| 106 | + " \"fields\": [\"id\", \"name\", \"email\"],\n", |
| 107 | + " }\n", |
| 108 | + " return args\n", |
| 109 | + "\n", |
| 110 | + " def build_request(self, **kwargs):\n", |
| 111 | + " # NOTE: Access token required for this to resolve...\n", |
| 112 | + " mArgs = self._request_args() if not kwargs else kwargs\n", |
| 113 | + " query_1 = \"https://graph.facebook.com/v12.0/me?fields=id%2Cname%2Cemail&transport=cors&access_token=EAAGOLqHzArABAPBtrJMN7pUyWjrYRrvDzDqy7st3qy3JhcBAYmn8ZAzehiMv4wyEKI9853wdTs4E3Il4C1rARdIcQMyfEegyVSbEez3cnfZAgEwQyovlFPuexsRnOZB3cWeUsxEYM6Bab3i5Bz9RPZAAw1zJUM2ZBZAZAUWhIgMKsPliutt7t4w9zsV45f0YQ2FtPBM2xsjOAZDZD\"\n", |
| 114 | + " query = self.base_url + mArgs.get(\"version\", \"\") + \"/\" + mArgs.get(\"node\", \"\")\n", |
| 115 | + " if mArgs.get(\"fields\", \"\"):\n", |
| 116 | + " query += \"?fields=\"\n", |
| 117 | + " for fld in mArgs.get(\"fields\"):\n", |
| 118 | + " query += fld + mArgs.get(\"field_sep\")\n", |
| 119 | + " return query\n", |
| 120 | + "\n", |
| 121 | + " def get_graph(self, creds=\"legacy\"):\n", |
| 122 | + " if creds == \"legacy\":\n", |
| 123 | + " return facebook.GraphAPI(access_token=self.user_token, version=\"3.1\")\n", |
| 124 | + " else:\n", |
| 125 | + " return facebook.GraphAPI(access_token=self.user_token, version=\"3.1\")" |
65 | 126 | ]
|
66 | 127 | },
|
67 | 128 | {
|
68 | 129 | "cell_type": "code",
|
69 |
| - "execution_count": 22, |
| 130 | + "execution_count": 39, |
| 131 | + "id": "e689d538", |
| 132 | + "metadata": {}, |
| 133 | + "outputs": [ |
| 134 | + { |
| 135 | + "data": { |
| 136 | + "text/plain": [ |
| 137 | + "'https://graph.facebook.com/v12.0/me?fields=id%2Cname%2Cemail%2C'" |
| 138 | + ] |
| 139 | + }, |
| 140 | + "execution_count": 39, |
| 141 | + "metadata": {}, |
| 142 | + "output_type": "execute_result" |
| 143 | + } |
| 144 | + ], |
| 145 | + "source": [ |
| 146 | + "fb = facebookHelper()\n", |
| 147 | + "fb.build_request()" |
| 148 | + ] |
| 149 | + }, |
| 150 | + { |
| 151 | + "cell_type": "code", |
| 152 | + "execution_count": 5, |
70 | 153 | "id": "ed34b513",
|
71 | 154 | "metadata": {},
|
72 | 155 | "outputs": [],
|
73 | 156 | "source": [
|
74 | 157 | "fb = facebookHelper()\n",
|
75 |
| - "g = fb.get_graph()" |
| 158 | + "g = fb.get_graph(creds=\"legacy\")" |
76 | 159 | ]
|
77 | 160 | },
|
78 | 161 | {
|
|
155 | 238 | },
|
156 | 239 | {
|
157 | 240 | "cell_type": "code",
|
158 |
| - "execution_count": 36, |
| 241 | + "execution_count": 6, |
159 | 242 | "id": "762f4f04",
|
160 | 243 | "metadata": {},
|
161 | 244 | "outputs": [
|
|
166 | 249 | "traceback": [
|
167 | 250 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
168 | 251 | "\u001b[0;31mGraphAPIError\u001b[0m Traceback (most recent call last)",
|
169 |
| - "\u001b[0;32m/var/folders/9f/0jslw5zs3rg1hqt9w92zlbv00000gn/T/ipykernel_14646/962639775.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'/search?q=test&type=event&limit=10000'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", |
| 252 | + "\u001b[0;32m/var/folders/9f/0jslw5zs3rg1hqt9w92zlbv00000gn/T/ipykernel_28371/962639775.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'/search?q=test&type=event&limit=10000'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", |
170 | 253 | "\u001b[0;32m~/.pyenv/versions/3.7.4/envs/music/lib/python3.7/site-packages/facebook/__init__.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, path, args, post_args, files, method)\u001b[0m\n\u001b[1;32m 311\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 312\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"error\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 313\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mGraphAPIError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 314\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 315\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
|
171 | 254 | "\u001b[0;31mGraphAPIError\u001b[0m: (#3) Application does not have the capability to make this API call."
|
172 | 255 | ]
|
173 | 256 | }
|
174 | 257 | ],
|
175 | 258 | "source": [
|
176 |
| - "g.request(path='/search?q=test&type=event&limit=10000')" |
| 259 | + "g.request(path=\"/search?q=test&type=event&limit=10000\")" |
177 | 260 | ]
|
178 | 261 | },
|
179 | 262 | {
|
180 | 263 | "cell_type": "code",
|
181 |
| - "execution_count": 32, |
| 264 | + "execution_count": 7, |
182 | 265 | "id": "9027cb00",
|
183 | 266 | "metadata": {},
|
184 | 267 | "outputs": [
|
|
188 | 271 | "'v3.1'"
|
189 | 272 | ]
|
190 | 273 | },
|
191 |
| - "execution_count": 32, |
| 274 | + "execution_count": 7, |
192 | 275 | "metadata": {},
|
193 | 276 | "output_type": "execute_result"
|
194 | 277 | }
|
|
199 | 282 | },
|
200 | 283 | {
|
201 | 284 | "cell_type": "code",
|
202 |
| - "execution_count": 24, |
| 285 | + "execution_count": 8, |
203 | 286 | "id": "e66b5a40",
|
204 | 287 | "metadata": {},
|
205 | 288 | "outputs": [
|
206 | 289 | {
|
207 | 290 | "data": {
|
208 | 291 | "text/plain": [
|
209 |
| - "['__class__',\n", |
210 |
| - " '__delattr__',\n", |
211 |
| - " '__dict__',\n", |
212 |
| - " '__dir__',\n", |
213 |
| - " '__doc__',\n", |
214 |
| - " '__eq__',\n", |
215 |
| - " '__format__',\n", |
216 |
| - " '__ge__',\n", |
217 |
| - " '__getattribute__',\n", |
218 |
| - " '__gt__',\n", |
219 |
| - " '__hash__',\n", |
220 |
| - " '__init__',\n", |
221 |
| - " '__init_subclass__',\n", |
222 |
| - " '__le__',\n", |
223 |
| - " '__lt__',\n", |
224 |
| - " '__module__',\n", |
225 |
| - " '__ne__',\n", |
226 |
| - " '__new__',\n", |
227 |
| - " '__reduce__',\n", |
228 |
| - " '__reduce_ex__',\n", |
229 |
| - " '__repr__',\n", |
230 |
| - " '__setattr__',\n", |
231 |
| - " '__sizeof__',\n", |
232 |
| - " '__str__',\n", |
233 |
| - " '__subclasshook__',\n", |
234 |
| - " '__weakref__',\n", |
235 |
| - " 'access_token',\n", |
236 |
| - " 'debug_access_token',\n", |
237 |
| - " 'delete_object',\n", |
238 |
| - " 'delete_request',\n", |
239 |
| - " 'extend_access_token',\n", |
240 |
| - " 'get_access_token_from_code',\n", |
241 |
| - " 'get_all_connections',\n", |
242 |
| - " 'get_app_access_token',\n", |
243 |
| - " 'get_auth_url',\n", |
244 |
| - " 'get_connections',\n", |
245 |
| - " 'get_object',\n", |
246 |
| - " 'get_objects',\n", |
247 |
| - " 'get_permissions',\n", |
248 |
| - " 'get_version',\n", |
249 |
| - " 'proxies',\n", |
250 |
| - " 'put_comment',\n", |
251 |
| - " 'put_like',\n", |
252 |
| - " 'put_object',\n", |
253 |
| - " 'put_photo',\n", |
254 |
| - " 'request',\n", |
255 |
| - " 'search',\n", |
256 |
| - " 'session',\n", |
257 |
| - " 'timeout',\n", |
258 |
| - " 'version']" |
| 292 | + "{'id': '10208907223354367',\n", |
| 293 | + " 'name': 'Dayo Origunwa',\n", |
| 294 | + |
259 | 295 | ]
|
260 | 296 | },
|
261 |
| - "execution_count": 24, |
| 297 | + "execution_count": 8, |
262 | 298 | "metadata": {},
|
263 | 299 | "output_type": "execute_result"
|
264 | 300 | }
|
265 | 301 | ],
|
266 | 302 | "source": [
|
267 |
| - "list(dir(g))" |
| 303 | + "# testing a curl replication\n", |
| 304 | + "test_link = \"https://graph.facebook.com/v12.0/me?fields=id%2Cname%2Cemail&transport=cors&access_token=EAAGOLqHzArABAPBtrJMN7pUyWjrYRrvDzDqy7st3qy3JhcBAYmn8ZAzehiMv4wyEKI9853wdTs4E3Il4C1rARdIcQMyfEegyVSbEez3cnfZAgEwQyovlFPuexsRnOZB3cWeUsxEYM6Bab3i5Bz9RPZAAw1zJUM2ZBZAZAUWhIgMKsPliutt7t4w9zsV45f0YQ2FtPBM2xsjOAZDZD\"\n", |
| 305 | + "\n", |
| 306 | + "import requests\n", |
| 307 | + "\n", |
| 308 | + "r = requests.get(test_link)\n", |
| 309 | + "r.json()" |
268 | 310 | ]
|
269 | 311 | },
|
270 | 312 | {
|
|
0 commit comments